c# webbrowers控件调用百度地图后,鼠标读取百度地图的坐标

来源:互联网 发布:如何去除马赛克软件 编辑:程序博客网 时间:2024/05/21 11:21

首先在html文件下写入下面代码;

<!DOCTYPE html><html><head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />    <style type="text/css">        body, html, #allmap {            width: 100%;            height: 100%;            overflow: hidden;            margin: 0;            font-family: 微软雅黑;        }    </style>    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>      //<script type="text/javascript" src="MarkerClusterer_min.js"></script>     //<script type="text/javascript" src="LuShu_min.js"></script>    <title>获取地图经纬度</title></head><body>    <div id="mouselng" style="visibility:hidden"></div>    <div id="mouselat" style="visibility:hidden"></div>    <div id="allmap"></div></body></html><script type="text/javascript"> var map = new BMap.Map("allmap");     var point = new BMap.Point(116.404, 39.915);    map.centerAndZoom(point, 8);//窗体加载之后初始的坐标点和放缩倍数    map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放    //map.centerAndZoom();    map.enableKeyboard(true);//开启键盘控制    map.addEventListener("mousemove", GetlngAndlat);//添加鼠标移动获取经纬度功能    //获取坐标    function GetlngAndlat(e) {        if (e.point.lng != null) {            document.getElementById("mouselng").innerHTML = e.point.lng;            document.getElementById("mouselat").innerHTML = e.point.lat;        }    }    </script>

添加一个 timer控件,然后在cs文件中的窗体启动方法中写入下面函数:

 #region 窗体加载事件        private void F_HistoricalTraceControl_Load(object sender, EventArgs e)        {            string str_url = Application.StartupPath + "定义的HTML文件名称.html";//放在debug文件夹下            Uri url = new Uri(str_url);            HistoricalTraceWebBrowser.Url = url;            HistoricalTraceWebBrowser.ObjectForScripting = this;            latLngTimer.Enabled = true;//timer控件        }        #endregion

添加一个timer事件,代码如下:

 #region 鼠标移动获取地图上点的经纬度        private void latLngTimer_Tick(object sender, EventArgs e)        {            try            {                //将html中获取的坐标交互                string tag_lng = HistoricalTraceWebBrowser.Document.GetElementById("mouselng").InnerText;                string tag_lat = HistoricalTraceWebBrowser.Document.GetElementById("mouselat").InnerText;                double dou_lng, dou_lat;                if (double.TryParse(tag_lng, out dou_lng) && double.TryParse(tag_lat, out dou_lat))                {               //显示当前点位置,根据自己的要求将经纬度显示出来                    sSecItem.Caption = string.Format("经度:{0}, 纬度:{1} ", dou_lng.ToString("F5"), dou_lat.ToString("F5"));                }            }            catch (Exception ee)            {                //MessageBox.Show(ee.Message);            }        }        #endregion