做所有操作之前,应先引入百度地图开发的js文件
<script type="text/javascript"
src="http://api.map.baidu.com/api?v=2.0&ak=你的秘钥"></script>
一、创建一个Convertor对象
var convertor = new BMap.Convertor();
二、Convertor的方法
translate(points: Array<BMap.Point>, from: number, to: number, callback: function)
描述:对指定的点数组进行坐标转换,转换规则为从from到to,转换完成后调用callback,callback的参数为Object 。一次最多10个点。
参数介绍:
1. points:需要转换的点数组,非常注意的是,一次只能转换10个点,如果有很多点,你需要用循环将转换后的点连起来
2. from和to
注意:from中的3还包含高德地图
举例:
如果把google地图坐标,转换为百度地图坐标:convertor .translate(pointArr,3,5,function(data){});
3.第四个参数:回调函数callback
convertor .translate(pointArr,3,5,function(data){});
其中function(data){}可以写到上一个函数里,也可以单独拿出来,然后在上一个函数里调用
回调函数的参数有一个类型是:TranslateResults ,
它有两个属性:
第一个属性的状态码:
第二个属性:是转换后的点数组
三、代码示例:
-
小于等于10个点:
var points = []; //要转换的点数组 var convertor = new BMap.Convertor(); convertor.translate(points,3,5,function(data){ console.log(data.status); console.log(data.points); //转换后的点数组 })
-
大于10个点
var points = []; //要转换的点数组 var allPoint = []; //转换后的点数组 var convertor = new BMap.Convertor(); var translatePoint = []; //中转数组 for (var i=0; i<points.length;i+=10){ translatePoint.push(points.slice(i,i+10)); // 从已有的数组中返回选定的元素,该方法并不会修改数组,而是返回一个子数组 } for (var i=0 ;i<translatePoint.length;i++){ (function (index) { convertor.translate(translatePoint[index],3,5,function (data) { console.log(data.points); allPoint.push.apply(allPoint,data.points); }); })(i); }
关于百度地图其他详细功能请参考api文档:
http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference_3_0.html#a7b55
web服务Api:
http://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition