您的位置:首页 > Web前端 > JavaScript

百度JSP版坐标转换 限定不大于10个每次的处理办法

2015-10-16 10:12 597 查看
GPS转百度,百度API一次最多只支持10个点的坐标转换,只能动态把数据拆分:

//按批进行坐标转换 限定不大于10个每次

var mapData;

var changeCount = 0;

if (mapData.length % 10 > 0) {

changeCount = (mapData.length / 10) + 1;

}

else {

changeCount = (mapData.length / 10);

}

for (var i = 0; i < changeCount; i++) {

var points = [];

for (var j = 0; j < 10; j++) {

points.push(new BMap.Point(mapData[(i * 10) + j].Latitude, mapData[(i * 10) + j].Longitude));

}

var convertor = new BMap.Convertor();

convertor.translate(points, 1, 5, translateCallback);

}

针对单个点转换和批量转换两种接口,有两种方法,但是思想都是一样的,顺序发送,顺序接收,,关键在于控制发送顺序,因此只需要在第一启动转化后,以后的转换都在回调方法中写入即可。

法一 使用BMap.Convertor.translate()方法

var TransPos = 0;

function TransGPS()

{

//封装GPS点

//.......相关操作在这

...........

BMap.Convertor.translate(gpsPoints[TransPos], 0, TranlateCallBack );//首次启动转化

}

TranlateCallBack = function (point) {

drawpoints.push(point);

PolyLine.setPath(drawpoints);

TransPos++;//记录当前发送位置变量

if(TransPos<gpsPoints.length)//gpsPoints是GPS坐标点

{

BMap.Convertor.translate(gpsPoints[TransPos], 0, TranlateCallBack );

}

}

法二 使用BMap.Convertor.transMore()方法

var TransPos = 0;

function TransGPS()

{

//封装GPS点

//.......相关操作在这

...........

//GPS点分组,每20个为一组,存放pointsArrray中

BMap.Convertor.transMore(pointsArrray[TransPos], 0, callback);//首次启动转化

}

function callback(points)

{

var TransResult = null;

for(var index in points)

{

TransResult = points[index];

if(TransResult.error != 0){continue;}//出错就直接返回;

var point = new BMap.Point(TransResult.x, TransResult.y);

drawpoints.push(point);

}

PolyLine.setPath(drawpoints);

TransPos++;//当前发送位置,初始为0

if(TransPos<pointsArrray.length)//pointsArrray是一个二维数组,每个元素都是最多为20个GPS点的一维数组,pointsArrray需要事先封装

{

BMap.Convertor.transMore(pointsArrray[TransPos], 0, callback);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: