找了个示例项目,运行了下,然后对照着百度的官方示例(百度地图开放平台-首页链接)自己增加了点内容。
需要技能为C#,JavaScript,HTML。不会后两个,复制粘贴官方demo也能对付着用。
GitHub项目链接 https://github.com/landbroken/BaiduMapLearning
先开个坑,有空更新完整版。
开发中可能涉及到的基础技能:
以下为示例:
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) {
}
html文件script中函数定义
//获取测试坐标 start
var Lng = 116.380960
var Lat = 39.913280
function GetTestGPS(CurLng, CurLat) {
//百度地图API功能,经度,纬度
var point = new BMap.Point(CurLng, CurLat);
map.centerAndZoom(point, 20);
var text="123"
window.external.LocateInfo(text);
return Lng;
}
//获取测试坐标 end
private void btnGetRightClickGPS_Click(object sender, EventArgs e)
{
//116.380967,39.913285
object[] objects = new object[2];
//当前经度
objects[0] = Convert.ToDouble(textBoxX.Text);
//当前纬度
objects[1] = Convert.ToDouble(textBoxY.Text);
//传值给html中的FindPosition函数
object bb = webBrowser1.Document.InvokeScript("GetTestGPS", objects);
}
public void LocateInfo(string msg)
{
string get = msg;
}
这里使用了两种方法,方法一是return这一句,返回值赋值给object对象bb 。
return Lng;
方法二是window.external这里,调用了C#里面的LocateInfo函数,传递一个string
window.external.LocateInfo(text);
1、添加一个webBrowser控件
2、通过控件载入地图(需要联网)
string str_url = Application.StartupPath + "\\IndexMap.html";
Uri url = new Uri(str_url);
webBrowser1.Url = url;
//屏蔽webBrowser浏览器右键菜单
//webBrowser1.IsWebBrowserContextMenuEnabled = false;
//修改webbrowser的属性使c#可以调用js方法:
webBrowser1.ObjectForScripting = this;
3、功能写在html中,通过C#调用js方法实现,js方法可以从百度的官方demo复制。例如:
//清除地图上的标记,点击清除按钮触发
private void clearMarker_Click(object sender, EventArgs e)
{
webBrowser1.Document.InvokeScript("ClearAllMarkers");
}
详见GitHub上完整示例。
1、C#|通过webBrowser控件实现与html间的相互传值