您的位置:首页 > 编程语言 > C#

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

2017-08-31 12:50 302 查看
首先在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,
9b25
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: