本人接触网页地图以来已有5年之窗,与百度地图打交道少说也有3年以上了,百度坐标转换从最开始的只支持单组坐标转换到现在的批量转换(限制每次100组),而且是无规律的算法纠偏,根本不好复制这种算法到本地进行转换,每次只能乖乖的ajax get到百度服务接口返回结果。
这种做法对于单组坐标的转换体验上影响不大,但是当我们需要纠偏的坐标量很多的时候,按正常的写法ajax异步请求,而且每次最多只能传入100组坐标,只能分批来调,而且是异步处理,还要定义一堆全局变量记住状态值,代码量多且复杂,项目大就难以管理了。
今天终于让我想出了一个优化的解决办法,对这个服务进行封装,闭包内进行异步方法递归,把回调方法传递到最后结果那一处执行并返回结果对象。废话不多说了,直接亮代码,写的不好处欢迎提意见!
baidu.maps.convertor.js文件:
/**
*! 百度地图坐标转换接口
*! 支持从gps(真实)坐标、google坐标、soso坐标等转换为百度坐标
*! 传入百度坐标对象,返回纠偏后的百度坐标对象,注意要在百度地图api环境下调用
*/
(function() {
var _BAIDU_KEY_ = "xxxxxx"; // 请填写您申请的密钥
var point_count = [];
var res = [];
var convertor = (function() {
return {
translate: translate
};
/**
* point 为百度的坐标对象,可以是单个坐标对象,也可以为多个坐标对象的数组
* type取值&