C#中调用百度地图API应用(.net&nb…

原本想在JavaScript中调用mscomm32.ocx控件,从串口中读取坐标数据,并在百度地图中标注出来。但是JS读串口一直没有成功,所以转而在.net中插入地图API。
参考: http://blog.csdn.net/kkkkkxiaofei/article/details/8663377

首先在Form中插入WebBrowser对象,连接指向包含百度地图API的HTML文件:
string str_url = Application.StartupPath+"\\BaiduMapApi.html";
Uri url = new Uri( str_url);
webBrowser1.Url=url;
webBrowser1.ObjectForScripting=this;

在文件“BaiduMapApi.html”中,加入地图:(代码差不多就是这个样子,具体也不太懂为什么是这样)
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;}
#l-map{height:100%;width:78%;float:left;border-right:2px solid #bcbcbc;}
#r-result{height:100%;width:20%;float:left;}

C#中包含using System.Security.Permissions;
在namespace中加入,
[PermissionSet(SecurityAction.Demand,Name="FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
到这里,Form中应该可以有显示百度地图了。接下来就是对地图操作了,比如定位、绘制路线、测量距离等等。

地图显示、缩放、定位、绘制路线等都是地图api的功能项,其对应的函数也都在BaiduMapApi.html中,而缩放、定位等功能所需要的数据,比如缩放倍数、位置坐标等都需要C#提供,C#与JavaScript中的函数相互调用、C#与JavaScript中数据传输完成该软件开发的核心知识点。

1、JavaScript函数:
脚本语言十分简单,又与C语言类似。例如绘制坐标点函数:
function DrawPoint()
{
 var Array=[];
 var total_num =2;
 for( var i=0;i
 {
   Array.push(window.external.Getpoints(i));
 }
 var new_point=new BMap.Point(Array[0],Array[1]);
 map.setCenter(new_point);
 map.setZoom(15);
 var marker1=new BMap.Marker(new_point);
 map.addOverlay(marker1);
}

2、JavaScript中调用C#函数:
在函数DrawPoint函数中,便有JavaScript调用C#函数的语句,
Array.push(window.external.Getpoints(i));
其中,window.external.Getpoints(i)便是C#中的函数Getpoint(int),(只需加前缀该window.external),方法可以执行C#函数,同时还可以向JavaScript返回数据,从而实现C#向JavaScript的数据传递。

3、C#中调用JavaScript函数也十分简单,
webBrowser1.Document.InvokeScript("DrawPoint");
简单的一句话便可以了。同样该也可以返回数据。DrawPoint为JavaScript中的函数。

C#与JavaScript交互的基本内容便是这样了。应用该方法,可以很容易的在.net的Form中插入地图api,并实现一系列的功能操作。

总结:有点感慨现在的语言真是强大,几乎任何两种语言都可以简单明了的糅合在一起。


你可能感兴趣的:(C#中调用百度地图API应用(.net&nb…)