读书人

js调用百度APIGPS经纬度转换成百度m

发布时间: 2013-11-25 13:22:27 作者: rapoo

js调用百度API,GPS经纬度转换成百度地图经纬度,用BMap.Convertor.translate不能及时转换问题,求大神帮忙。
从数据库取GPS点,转换成百度地图经纬度,然后描点连线。
以下代码一共有两点问题:
1、数据库点的顺序是不变的,但是通过回调函数之后PointArr中的数据顺序是随机的。
2、setTimeout函数不起作用,所有的点都是一起出现,没有模拟轨迹的。

   
//调用部分
function makeLine() {
for (var i = 0; i <= Array.length - 1; i += 2) {//偶数索引存经度,奇数存维度
var gpsPoint=new BMap.Point(Array[i], Array[i + 1]);
//GPS转百度
BMap.Convertor.translate(gpsPoint,0,translateCallback);
}
}
translateCallback = function (point){

PointArr.push(point);
setTimeout("makepoly()", 1000);
}
function makepoly() {
//大于总数,返回
if(num>=total_num){
return;
}
//第一个点不画线只描点
if(num==0){
//alert(num);
var markergps = new BMap.Marker(PointArr[0]);
map.addOverlay(markergps);
num++;

}
else{
//alert(num);
var polyline = new BMap.Polyline([PointArr[num - 1], PointArr[num]], { strokeColor: "blue", strokeWeight: 3, strokeOpacity: 0.5 }); //定义折线
map.addOverlay(polyline); //添加折线到地图上
var markergps = new BMap.Marker(PointArr[num]);
map.addOverlay(markergps);
num++;
}
}

求各位大神帮帮忙,小弟不胜感激! js GPS转百度地图 百度地图轨迹 Convertor.translate
[解决办法]
都是异步解码,不能直接通过for语句来实现,每个解码的返回结果循序不一定按照循序返回,要通过全局变量来控制模拟for语句

var al=Array.length - 1
var now=0
function makeLine() {

var gpsPoint=new BMap.Point(Array[now], Array[now + 1]);
BMap.Convertor.translate(gpsPoint,0,translateCallback);


now+=2;
}
translateCallback = function (point){

PointArr.push(point);
setTimeout("makepoly()", 1000);
}
function makepoly() {
//大于总数,返回
if(num>=total_num){
return;
}
//第一个点不画线只描点
if(num==0){
//alert(num);
var markergps = new BMap.Marker(PointArr[0]);


map.addOverlay(markergps);
num++;

}
else{
//alert(num);
var polyline = new BMap.Polyline([PointArr[num - 1], PointArr[num]], { strokeColor: "blue", strokeWeight: 3, strokeOpacity: 0.5 }); //定义折线
map.addOverlay(polyline); //添加折线到地图上
var markergps = new BMap.Marker(PointArr[num]);
map.addOverlay(markergps);
num++;
}

if(now<al) makeLine()
}

读书人网 >JavaScript

热点推荐