c# winform调用百度地图

来源:互联网 发布:smtp 修改端口号 编辑:程序博客网 时间:2024/05/06 21:55

winform百度地图接入教程

Byhollow

在百度地图接入方式中,我们选择JavaScript API大众版 V2.0.通过相关阅读我们可以写出一个html出来,以被winform中的WebBrowser控件所使用。

在此文件夹中已经给出map.html即为所需。此为之后所操作的地图模板。

如下:

<!DOCTYPE html>  

<html>  

<head>  

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />  

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  

<title>Hello, World</title>  

<style type="text/css">  

html{height:100%}  

body{height:100%;margin:0px;padding:0px}  

#container{height:100%}  

</style>  

<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.5&ak=xxQWNVG9TZfojtEeBC3WxEGv">

</script>

<script type="text/javascript">

 var x = 116.404, y = 39.915;

 function initdata(x0, y0) {//在这里我们将数据的初始化独立出来,以被在c#中所调用

 this.x = x0;

 this.y = y0;

 createMap();

}

function createMap() {

var map = new BMap.Map("container");     // 创建地图实例

var point = new BMap.Point(x, y);

map.centerAndZoom(point, 15);      // 初始化地图,设置中心点坐标和地图级别

map.enableScrollWheelZoom();

map.addControl(new BMap.NavigationControl());

map.addControl(new BMap.NavigationControl());

map.addControl(new BMap.ScaleControl());

map.addControl(new BMap.OverviewMapControl());

map.addControl(new BMap.MapTypeControl());

var point = new BMap.Point(x, y);

map.centerAndZoom(point, 15);

var marker = new BMap.Marker(point);        // 创建标注

marker.addEventListener("click"function () {

var point = new BMap.Point(116.4, 39.8);  // 创建点坐标

 map.centerAndZoom(point, 15);

});

 map.addOverlay(marker);     // 将标注添加到地图中

}

    </script>  

</head>  

 

<body>  

<div id="container"></div> 

</body>  

</html>

在地图窗体加载的时候,我们将webbrowser控件的uri指向上面这个html。同时将传入所需的x,y坐标。

private void btn_location_Click(object senderEventArgs e)
{
BaiduMap form = new BaiduMap();
form.initData(Convert.ToDouble(txt_X.Text), Convert.ToDouble(txt_Y.Text));
form.ShowDialog();
}
在第二个窗体中我们即将获得的坐标x,y传了过去。BaiduMap.cs
double xy;
public void initData(double xdouble y)
{
this.x = x;
this.y = y;
}
同时.
private void web_map_DocumentCompleted(object senderWebBrowserDocumentCompletedEventArgs e)
{
web_map.Document.InvokeScript("initdata"new Object[] { xy });//调用html中我们独立出来的那个initdata函数。将数据初始化进去,这里是c#调用JavaScript的函数。
 }

在文档被加载完毕的时候我们将调用initdata,将所输入的坐标设置到webbrowser中。

 private void BaiduMap_Load(object senderEventArgs e)
 {
 web_map.Url = new Uri(Application.StartupPath + @"\res\map.html"UriKind.Absolute); //窗体加载的时候将我们准备好的html模板设置进去。
}
 
这样就完成了。给定坐标,在百度地图中定位到该地址,并在地图中标记出来

效果如下图:

 

老规矩,送上本文档及源码demo  稍后点击打开链接

1 0
原创粉丝点击