有时候我们需要用到C#和html文件间的相互传值,如此时我们希望通过一个html文件通过高德地图的提供的接口来获取当前坐标点周围的道路信息和兴趣点信息,用于显示在GMap.Net控件上,则可以通过webBrowser控件方便的实现。
webBrowser
WebBrowser 是一个 .NET 控件类,使用户可以在窗体中导航网页。WebBrowser 控件会占用大量资源。使用完该控件后一定要调用 Dispose 方法,以便确保及时释放所有资源。必须在附加事件的同一线程上调用 Dispose 方法,该线程应始终是消息或用户界面 (UI) 线程。
首先我们拖一个webBrowser控件到界面中,并在页面加载时加载html文件到webBrowser控件中
//加载逆解析地址的html
webBrowser.Navigate("C:\\findinfo.html");
//屏蔽webBrowser浏览器右键菜单
webBrowser.IsWebBrowserContextMenuEnabled = false;
//修改webbrowser的属性使c#可以调用js方法:
webBrowser.ObjectForScripting = this;
C#传值给HTML
若C#传递objects的值给html里的函数里的变量CurLat, CurLng,则可通过如下代码实现:
webBrowser.Document.InvokeScript("mapInit", objects);
function mapInit(CurLat, CurLng) {
}
为实现上述功能,下面给出将当前目标点的经纬度通过C#传递给html的整体函数
C#中传递值给html里的函数
object[] objects = new object[2];
//当前纬度
objects[0] = share_data.CurLat;
//当前经度
objects[1] = share_data.CurLng;
//传值给html中的mapInit函数
webBrowser.Document.InvokeScript("mapInit", objects);
html文件script中对应的maptnit函数
//初始化加载地图并进行地址逆解析
function mapInit(CurLat, CurLng) {
//默认定位:初始化加载地图时,center及level属性缺省,地图默认显示用户所在城市范围
mapObj =