Yuno

背景

目前国内主要有以下三种坐标系:

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>经度:"+p.lng+"<br>纬度:"+p.lat+*/"<br>所在城市:" + loc[ano]["city"] + "<br>地址:" + loc[ano]["address"] + "<br>是否水浸:" + loc[ano]["soak"] + "<br>水位:" + loc[ano]["level"];
//console.log(ano);
if (loc[ano]["soak"].trim() == "1".trim()) {
marker.setAnimation(BMAP_ANIMATION_BOUNCE);
} else {
marker.setAnimation();
}
addClickHandler(content, marker);
}
});
}
}