1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 解决使用百度地图API时偏移问题并自适应中心点和比例

解决使用百度地图API时偏移问题并自适应中心点和比例

时间:2021-10-27 00:10:42

相关推荐

解决使用百度地图API时偏移问题并自适应中心点和比例

关于地图偏移官方给出的说明:

4.3 百度坐标为何有偏移?

国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02,对地理位置进行首次加密。百度坐标在此基础上,进行了BD-09二次加密措施,更加保护了个人隐私。百度对外接口的坐标系并不是GPS采集的真实经纬度,需要通过坐标转换接口进行转换。

解决办法

setZoom(json.data); //多个坐标数组//设置中心点 function setZoom(points) {if (points.length > 0) {var maxLng = points[0].DV_LNG; //最大最小经纬度赋值var minLng = points[0].DV_LNG;var maxLat = points[0].DV_LAT;var minLat = points[0].DV_LAT;var res;for (var i = points.length - 1; i >= 0; i--) {res = points[i];if (res.DV_LNG > maxLng) maxLng = res.DV_LNG; //取最大经度if (res.DV_LNG < minLng) minLng = res.DV_LNG; //取最小经度if (res.DV_LAT > maxLat) maxLat = res.DV_LAT; //取最大纬度if (res.DV_LAT < minLat) minLat = res.DV_LAT; //取最小纬度};var cenLng = (parseFloat(maxLng) + parseFloat(minLng)) / 2; //通过最大最小经纬度取中心点var cenLat = (parseFloat(maxLat) + parseFloat(minLat)) / 2;var zoom = getZoom(maxLng, minLng, maxLat, minLat); //取缩放比例// map.centerAndZoom(new BMap.Point(cenLng, cenLat), zoom); //设置中心点以及缩放比例var point = new BMap.Point(cenLng , cenLat); // 创建点坐标 BMap.Convertor.translate(point,0,zoom,translateCallback);//真实经纬度转成百度坐标,解决偏移问题!!!这是重点} else {//没有坐标,显示全中国 map.centerAndZoom(new BMap.Point(103.388611, 35.563611), 6);}}//根据经纬极值计算绽放级别。 function getZoom(maxLng, minLng, maxLat, minLat) {var zoom = ["50", "100", "200", "500", "1000", "2000", "5000", "10000", "20000", "25000", "50000", "100000","200000", "500000", "1000000", "2000000"] //级别18到3。 var pointA = new BMap.Point(maxLng, maxLat); // 创建点坐标A var pointB = new BMap.Point(minLng, minLat); // 创建点坐标B var distance = map.getDistance(pointA, pointB).toFixed(1); //获取两点距离,保留小数点后两位 for (var i = 0, zoomLen = zoom.length; i < zoomLen; i++) {if (zoom[i] - distance > 0) {return 18 - i + 3; //之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。 }};}//坐标转换完之后的回调函数function translateCallback(point1,zoom){map.centerAndZoom(point1, zoom); //设置中心点以及缩放比例}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。