百度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);
}
}
//按批进行坐标转换 限定不大于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);
}
}
相关文章推荐
- js实现观察者模式
- js 原型总结
- 纯JavaScript代码实现移动设备绘图解锁
- HighchartsJS创建环形带标识的图表实例
- js操作 ifarm contentWindow属性
- JS实现可自定义大小,可双击关闭的弹出层效果
- javascript中本地对象、内置对象和宿主对象(转)
- js在html中的加载执行顺序
- js中各种高度和宽度的获取方式
- JS原型与原型链终极详解
- javascript实现3D切换焦点图
- javascript 表单提交的几种方法
- 我也谈javascript闭包的原理理解
- JSON.parse()和JSON.stringify()
- JS基础知识梳理--setTimeout()&setInterval()
- 九、 用JavaScript实现更复杂的交互
- 学习Javascript的8张思维导图【收藏】
- Logstash处理json格式日志文件的三种方法
- 八、用JavaScript脚本实现Web页面信息交互
- JavaScript权威指南_166_第17章_事件处理_17.3-调用事件处理程序-参数