C#调用百度地图API经验分享

一、引言

找了个示例项目,运行了下,然后对照着百度的官方示例(百度地图开放平台-首页链接)自己增加了点内容。

需要技能为C#,JavaScript,HTML。不会后两个,复制粘贴官方demo也能对付着用。

GitHub项目链接 https://github.com/landbroken/BaiduMapLearning

先开个坑,有空更新完整版。

二、基础技能

开发中可能涉及到的基础技能:

  • 1、webBrowser控件在C#和HTML中传值

2.1 webBrowser控件在C#和HTML中传值

2.1.1 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) {

2.1.2 html至C#

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间的相互传值

你可能感兴趣的:(GIS,GIS入门)