背景
目前国内主要有以下三种坐标系:
WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。
GCJ02:又称火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。
BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标。
非中国地区地图,服务坐标统一使用WGS84坐标。
转换方法
百度对外接口的坐标系为BD09坐标系,并不是GPS采集的真实经纬度,在使用百度地图JavaScript API服务前,需先将非百度坐标通过坐标转换接口转换成百度坐标。 坐标转换、批量坐标转换示例详见JavaScript API示例。
具体实现
从云平台读出的数据流为json格式,把for循环的i传入回调函数,以实现标注内容的对应与添加。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| var loc = JSON.parse('${loc}'); recievePoints(loc); function recievePoints(loc){ for(let i=0;i<loc.length;i++){ var convertor = new BMap.Convertor(); var pointArr = []; var gpsPoint= new BMap.Point(loc[i]["lon"],loc[i]["lat"]); pointArr.push(gpsPoint); convertor.translate(pointArr,1,5,function addPoints(data,ano=i){ console.log(data); console.log(ano) if (data.status === 0) { var marker = new BMap.Marker(data.points[0]); map.addOverlay(marker); var content = "名称:" + loc[ano]["name"] +"<br>所在城市:" + loc[ano]["city"] + "<br>地址:" + loc[ano]["address"] + "<br>是否水浸:" + loc[ano]["soak"] + "<br>水位:" + loc[ano]["level"]; if (loc[ano]["soak"].trim() == "1".trim()) { marker.setAnimation(BMAP_ANIMATION_BOUNCE); } else { marker.setAnimation(); } addClickHandler(content, marker); } }); } }
|