百度地图坐标转换一次只能转换 10 个坐标,不知道为什么会有这么操蛋的设计,不过百度本来就是个操蛋玩意也是没办法的事,谁让这是一个逆向淘汰的社会呢。不用也得用。
添加路径
将坐标数组 lineStringArr 以 9 为单位分组,但是如果只是每组九个添加折线,组与组之间会有隔断,线是断的。所以只有第一组是9个坐标,其他组会添加上一组最后一个坐标,所以其他组是 10 个坐标
//baidu coordinate transformation
let total = 0;
let groupCount = 0; //covert 10 items each time
if (lineStringArr.length % 9 > 0) {
groupCount = (lineStringArr.length / 9) + 1;
}
else {
groupCount = (lineStringArr.length / 9);
}
console.log("str", lineStringArr.length);
for(let i=0;i<groupCount;i++){
let pos = new Array();
if(i != 0 && total < lineStringArr.length){//first group 9 items, 10items other group
console.log("i*8", (i*8) + i - 1);
pos.push(new BMap.Point(lineStringArr[(i*8) + i - 1].lng, lineStringArr[(i*8) + i - 1].lat));
}
for(let j=0;j<9;j++){
if(total<lineStringArr.length){
console.log("i*9+j", i*9+j);
let point = new BMap.Point(lineStringArr[(i * 9) + j].lng,lineStringArr[(i * 9) + j].lat);
pos.push(point);
}
total++;
}
new BMap.Convertor().translate(pos, 1, 5, function(data){
if(data.status === 0) {
console.log("linestr", pos);
console.log("baidu-data", data.points);
let polyline = new BMap.Polyline(data.points, {
strokeColor : "#28a745",
strokeWeight : 4,
strokeOpacity : 1
});
this.baiduMap.addOverlay(polyline);
}
}.bind(this));
}
添加 Marker
基于上边代码,将 9 修改为 10,并且不需要添加上一组最有一个坐标即可。
//baidu coordinate transformation
let total = 0;
let groupCount = 0; //covert 10 items each time
if (lineStringArr.length % 10 > 0) {
groupCount = (lineStringArr.length / 10) + 1;
}
else {
groupCount = (lineStringArr.length / 10);
}
console.log("str", lineStringArr.length);
for(let i=0;i<groupCount;i++){
let pos = new Array();
for(let j=0;j<10;j++){
if(total<lineStringArr.length){
let point = new BMap.Point(lineStringArr[(i * 10) + j].lng,lineStringArr[(i * 10) + j].lat);
pos.push(point);
}
total++;
}
new BMap.Convertor().translate(pos, 1, 5, function(data){
if(data.status === 0) {
do something......
}
}.bind(this));
}