本文主要是介绍ApiClound 百度地图解析地址geolocation 定位不够精确 的问题:,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
百度地图 API定位:
<script type="text/javascript">// 百度地图API功能var map = new BMap.Map("allmap");var point = new BMap.Point(116.331398,39.897445);map.centerAndZoom(point,12);var geolocation = new BMap.Geolocation();geolocation.getCurrentPosition(function(r){if(this.getStatus() == BMAP_STATUS_SUCCESS){var mk = new BMap.Marker(r.point);map.addOverlay(mk);map.panTo(r.point);alert('您的位置:'+r.point.lng+','+r.point.lat);}else {alert('failed'+this.getStatus());} },{enableHighAccuracy: true})//关于状态码//BMAP_STATUS_SUCCESS 检索成功。对应数值“0”。//BMAP_STATUS_CITY_LIST 城市列表。对应数值“1”。//BMAP_STATUS_UNKNOWN_LOCATION 位置结果未知。对应数值“2”。//BMAP_STATUS_UNKNOWN_ROUTE 导航结果未知。对应数值“3”。//BMAP_STATUS_INVALID_KEY 非法密钥。对应数值“4”。//BMAP_STATUS_INVALID_REQUEST 非法请求。对应数值“5”。//BMAP_STATUS_PERMISSION_DENIED 没有权限。对应数值“6”。(自 1.1 新增)//BMAP_STATUS_SERVICE_UNAVAILABLE 服务不可用。对应数值“7”。(自 1.1 新增)//BMAP_STATUS_TIMEOUT 超时。对应数值“8”。(自 1.1 新增)
</script>
博主发现 geolocation 定位很不精确 于是通过API找到以下解决办法:
//首先 获取到 bMap 模块(这个为apiClound的模块) 获取到定位信息 然后设置精确度 。 再根据ip ,新建地址解析器,获取到精确的地址街道信息:
api.require('bMap').getLocation({accuracy: '5m',autoStop: true,filter: 1}, function(ret, err) {if(ret.status){var markerMyPositionIcon = new bmap.Icon("../../../icon/userMarker.png", new bmap.Size(18,32));var mk = new bmap.Marker(new bmap.Point(ret.lon,ret.lat),{icon:markerMyPositionIcon});map.addOverlay(mk);map.panTo(ret);userInfo.longitude = ret.lon;userInfo.latitude = ret.lat;map.centerAndZoom(new bmap.Point(userInfo.longitude,userInfo.latitude),15); //定位到用户当前地点//地址解析器: 解决 geolocation 定位不精确的问题new BMap.Geocoder().getLocation(new bmap.Point(ret.lon,ret.lat),function (result,error) {if(result){document.getElementById("titleLocation").innerHTML = "中国" + result.address;}},{poiRadius:5,numPois:1});}else {alert("获取定位失败");}});
这篇关于ApiClound 百度地图解析地址geolocation 定位不够精确 的问题:的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!