js调用百度API,GPS经纬度转换成百度map经纬度,用BMap.Convertor.translate不能及时转换有关问题,求大神帮忙
js调用百度API,GPS经纬度转换成百度地图经纬度,用BMap.Convertor.translate不能及时转换问题,求大神帮忙。
从数据库取GPS点,转换成百度地图经纬度,然后描点连线。
以下代码一共有两点问题:
1、数据库点的顺序是不变的,但是通过回调函数之后PointArr中的数据顺序是随机的。
2、setTimeout函数不起作用,所有的点都是一起出现,没有模拟轨迹的。
求各位大神帮帮忙,小弟不胜感激!
------解决方案--------------------
都是异步解码,不能直接通过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]);
从数据库取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]);