使用 WebBrower 浏览器空间调用百度地图 的方法
private void Form1_Load(object sender, EventArgs e)
{
try
{
//这个文件于可执行文件放在同一目录
webBrowser1.Url = new Uri(Path.Combine(Application.StartupPath, “BaiduMap.htm”));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, “异常”, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
需要定位时调用
webBrowser1.Document.InvokeScript("setLocation", new object[] { x, y, str });
备注: x ,y 表示GPS定位的精度个纬度,Str 表示地图定位后,在地图上mark点上显示的文字信息
BaiduMap.htm 文件需要同编译后的EXE文件放在同一目录下。BaiduMap.htm 的代码如下
<!
>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>百度地图</title>
<style type="text/css">
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=4HBOfQKbSlpCSiAfzoowkclaDsIGD95A"></script>
</head>
<body>
<div id="allmap">
</div>
</body>
</html>
<script type="text/javascript">
//alert("Hello World");
var map = new BMap.Map("allmap"); // 创建Map实例
var point = new BMap.Point(116.404, 39.915); // 创建点坐标(经度,纬度)
map.centerAndZoom(point, 18); // 初始化地图,设置中心点坐标和地图大小级别
// map.addOverlay(new BMap.Marker(point)); // 给该坐标加一个红点标记
//var traffic = new BMap.TrafficLayer(); // 创建交通流量图层实例
//map.addTileLayer(traffic); // 将图层添加到地图上
map.addControl(new BMap.NavigationControl()); // 添加平移缩放控件
map.addControl(new BMap.ScaleControl()); // 添加比例尺控件
map.addControl(new BMap.OverviewMapControl()); //添加缩略地图控件
map.addControl(new BMap.MapTypeControl()); //添加地图类型控件
map.setCurrentCity("北京"); //设置地图显示的城市
//4HBOfQKbSlpCSiAfzoowkclaDsIGD95A
map.enableScrollWheelZoom(); //启用滚轮放大缩小
function setLocation(x,y,str) //参数:经纬度
{
var point = new BMap.Point(x, y);
var marker = new BMap.Marker(point);
//map.centerAndZoom(point, 18);
// map.addOverlay(marker);
// var opts = {
// width : 0, // 根据信息自动调整
// height: 0, // 信
// title : str // 信息窗口标题
// }
// var infoWindow = new BMap.InfoWindow(str, opts); // 创建信息窗口对象
// map.openInfoWindow(infoWindow, map.getCenter()); // 打开信息窗口
//坐标转换完之后的回调函数
translateCallback = function (data)
{
if(data.status === 0)
{
var marker = new BMap.Marker(data.points[0]);
map.addOverlay(marker);
var label = new BMap.Label(str,{offset:new BMap.Size(20,-10)});
marker.setLabel(label); //添加百度label
map.setCenter(data.points[0]);
}
}
setTimeout(function(){
var convertor = new BMap.Convertor();
var pointArr = [];
pointArr.push(point);
convertor.translate(pointArr, 1, 5, translateCallback)
}, 500);
map.enableScrollWheelZoom(); //启用滚轮放大缩小
}
</script>