百度地图获取经纬度问题

weixin_39868476 2018-04-11 05:46:26
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>点击地图获取地址和经纬度map,address,lng,lat</title>
<meta name="robots" content="noindex, nofollow">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<!-- 将百度地图API引入,设置好自己的key -->
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=H2o4AfHTmGGgMvnG6Yu6o8HG60EBovbM"></script>
</head>
<body>

<div class="main-div">
<form method="post" action="" name="theForm" enctype="multipart/form-data" onsubmit="return validate()">
<table cellspacing="1" cellpadding="3" width="100%">
<tr>
<td class="label">经度</td>
<td><input type="text" name="lng" id="lng" value=""/>
</td>
</tr>
<tr>
<td class="label">纬度</td>
<td><input type="text" name="lat" id="lat" value=""/>
</td>
</tr>
<tr>
<td class="label">地址</td>
<td>
<input type='text' value='' name='sever_add' id='sever_add' readonly>
<input type='button' value='点击显示地图获取地址经纬度' id='open'>
</td>
</tr>
</table>
</form>
<div id='allmap' style='width: 50%; height: 50%; position: absolute; display: none'></div>
</div>
</body>
</html>
<script type="text/javascript">
function validate() {
var sever_add = document.getElementsByName('sever_add')[0].value;
if (isNull(sever_add)) {
alert('请选择地址');
return false;
}
return true;
}

//判断是否是空
function isNull(a) {
return (a == '' || typeof(a) == 'undefined' || a == null) ? true : false;
}

document.getElementById('open').onclick = function () {
if (document.getElementById('allmap').style.display == 'none') {
document.getElementById('allmap').style.display = 'block';
} else {
document.getElementById('allmap').style.display = 'none';
}
}

var map = new BMap.Map("allmap");
var geoc = new BMap.Geocoder(); //地址解析对象
var markersArray = [];
var geolocation = new BMap.Geolocation();


var point = new BMap.Point(116.331398, 39.897445);
map.centerAndZoom(point, 12); // 中心点
geolocation.getCurrentPosition(function (r) {
if (this.getStatus() == BMAP_STATUS_SUCCESS) {
var mk = new BMap.Marker(r.point);
map.addOverlay(mk);
map.panTo(r.point);
map.enableScrollWheelZoom(true);
}
else {
alert('failed' + this.getStatus());
}
}, {enableHighAccuracy: true})
map.addEventListener("click", showInfo);


//清除标识
function clearOverlays() {
if (markersArray) {
for (i in markersArray) {
map.removeOverlay(markersArray[i])
}
}
}
//地图上标注
function addMarker(point) {
var marker = new BMap.Marker(point);
markersArray.push(marker);
clearOverlays();
map.addOverlay(marker);
}
//点击地图时间处理
function showInfo(e) {

document.getElementById('lng').value = e.point.lng;
document.getElementById('lat').value = e.point.lat;
console.log(e.clientX)
geoc.getLocation(e.point, function (rs) {
var addComp = rs.addressComponents;
var address = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;
if (confirm("确定要地址是" + address + "?")) {
document.getElementById('allmap').style.display = 'none';
document.getElementById('sever_add').value = address;
}
});
addMarker(e.point);

}
</script>



document.getElementById('lng').value = e.point.lng;
document.getElementById('lat').value = e.point.lat;
为什么可以直接获取到坐标、不懂、




...全文
657 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2018-04-12
  • 打赏
  • 举报
回复
引用 2 楼 weixin_39868476 的回复:
[quote=引用 1 楼 showbo 的回复:] map.addEventListener("click", showInfo); 不是有点击事件,事件的参数就是你要的经纬度,自己认真看百度的api
谢谢您告诉我、您的意思是如果点击事件是发生在地图上面的、那么那个参数就是坐标、这么理解对么、我真的是个新手、百度的api看的不合适很懂 [/quote]这个也不懂就要学基础js先了。。
weixin_39868476 2018-04-12
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
map.addEventListener("click", showInfo); 不是有点击事件,事件的参数就是你要的经纬度,自己认真看百度的api
谢谢您告诉我、您的意思是如果点击事件是发生在地图上面的、那么那个参数就是坐标、这么理解对么、我真的是个新手、百度的api看的不合适很懂
Go 旅城通票 2018-04-12
  • 打赏
  • 举报
回复
map.addEventListener("click", showInfo); 不是有点击事件,事件的参数就是你要的经纬度,自己认真看百度的api

Web开发学习资料推荐
easyui datebox设置日期范围
jqGrid一些疑难问题和解决方案
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2018-04-11 05:46
社区公告
暂无公告