百度API接口把GPS坐标转换为百度坐标
来源:互联网 发布:2016数据有效性的设置 编辑:程序博客网 时间:2024/04/29 22:05
网址
http://developer.baidu.com/map/jsdemo/demo/convertor.js 这是单个坐标转换接口
http://developer.baidu.com/map/jsdemo/demo/changeMore.js 这是批量转换接口
我把他们的源代码贴出来
批量转换函数
//2011-7-25 zhangying(function(){function load_script(xyUrl, callback){ var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = xyUrl; //借鉴了jQuery的script跨域方法 script.onload = script.onreadystatechange = function(){ if((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")){ callback && callback(); // Handle memory leak in IE script.onload = script.onreadystatechange = null; if ( head && script.parentNode ) { head.removeChild( script ); } } }; // Use insertBefore instead of appendChild to circumvent an IE6 bug. head.insertBefore( script, head.firstChild );}function transMore(points,type,callback){var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from=" + type + "&to=4&mode=1";var xs = [];var ys = [];var maxCnt = 20;//每次发送的最大个数var send = function(){var url = xyUrl + "&x=" + xs.join(",") + "&y=" + ys.join(",") + "&callback=callback"; //动态创建script标签 load_script(url);xs = [];ys = [];} for(var index in points){if(index % maxCnt == 0 && index != 0){send();} xs.push(points[index].lng); ys.push(points[index].lat);if(index == points.length - 1){send();} } }window.BMap = window.BMap || {};BMap.Convertor = {};BMap.Convertor.transMore = transMore;})();单个转换函数
//2011-7-25(function(){ //闭包function load_script(xyUrl, callback){ var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = xyUrl; //借鉴了jQuery的script跨域方法 script.onload = script.onreadystatechange = function(){ if((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")){ callback && callback(); // Handle memory leak in IE script.onload = script.onreadystatechange = null; if ( head && script.parentNode ) { head.removeChild( script ); } } }; // Use insertBefore instead of appendChild to circumvent an IE6 bug. head.insertBefore( script, head.firstChild );}function translate(point,type,callback){ var callbackName = 'cbk_' + Math.round(Math.random() * 10000); //随机函数名 var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from="+ type + "&to=4&x=" + point.lng + "&y=" + point.lat + "&callback=BMap.Convertor." + callbackName; //动态创建script标签 load_script(xyUrl); BMap.Convertor[callbackName] = function(xyResult){ delete BMap.Convertor[callbackName]; //调用完需要删除改函数 var point = new BMap.Point(xyResult.x, xyResult.y); callback && callback(point); }}window.BMap = window.BMap || {};BMap.Convertor = {};BMap.Convertor.translate = translate;})();
今天在网页中有一个函数想转换单个的,有一个函数想批量转换,把这两个都引用进项目后,出现了错误,后面分析源代码之后,找出了原因,在于最后三个语句,他们都是相同的,后面一个加入的覆盖了前面一个,所以造成总有一个接口使用不了
因此,我把这两个接口合二为一,把源代码引用到自己的项目中,解决了问题
二合一之后的源代码
(function(){ //闭包function load_script(xyUrl, callback){ var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = xyUrl; //借鉴了jQuery的script跨域方法 script.onload = script.onreadystatechange = function(){ if((!this.readyState || this.readyState === "loaded" || this.readyState === "complete")){ callback && callback(); // Handle memory leak in IE script.onload = script.onreadystatechange = null; if ( head && script.parentNode ) { head.removeChild( script ); } } }; // Use insertBefore instead of appendChild to circumvent an IE6 bug. head.insertBefore( script, head.firstChild );}function translate(point,type,callback){//单个转换 var callbackName = 'cbk_' + Math.round(Math.random() * 10000); //随机函数名 var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from="+ type + "&to=4&x=" + point.lng + "&y=" + point.lat + "&callback=BMap.Convertor." + callbackName; //动态创建script标签 load_script(xyUrl); BMap.Convertor[callbackName] = function(xyResult){ delete BMap.Convertor[callbackName]; //调用完需要删除改函数 var point = new BMap.Point(xyResult.x, xyResult.y); callback && callback(point); };}function transMore(points,type,callback){//批量转换var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from=" + type + "&to=4&mode=1";var xs = [];var ys = [];var maxCnt = 30;//每次发送的最大个数var send = function(){var url = xyUrl + "&x=" + xs.join(",") + "&y=" + ys.join(",") + "&callback=callback"; //动态创建script标签 load_script(url);xs = [];ys = [];}; for(var index in points){if(index % maxCnt == 0 && index != 0){send();} xs.push(points[index].lng); ys.push(points[index].lat);if(index == points.length - 1){send();} } }window.BMap = window.BMap || {};BMap.Convertor = {};BMap.Convertor.translate = translate;BMap.Convertor.transMore = transMore;})();
另外附上两个接口使用的示例源代码
单个转换的接口
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="initial-scale=1.0, user-scalable=no" /><style type="text/css">body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;}</style><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script><script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script><title>GPS转百度</title></head><body><div id="allmap"></div></body></html><script type="text/javascript">// 百度地图API功能//GPS坐标var xx = 116.397428;var yy = 39.90923;var gpsPoint = new BMap.Point(xx,yy);//地图初始化var bm = new BMap.Map("allmap");bm.centerAndZoom(gpsPoint, 15);bm.addControl(new BMap.NavigationControl());//添加谷歌marker和labelvar markergps = new BMap.Marker(gpsPoint);bm.addOverlay(markergps); //添加GPS标注var labelgps = new BMap.Label("我是GPS标注哦",{offset:new BMap.Size(20,-10)});markergps.setLabel(labelgps); //添加GPS标注//坐标转换完之后的回调函数translateCallback = function (point){ var marker = new BMap.Marker(point); bm.addOverlay(marker); var label = new BMap.Label("我是百度标注哦",{offset:new BMap.Size(20,-10)}); marker.setLabel(label); //添加百度label bm.setCenter(point); alert(point.lng + "," + point.lat);}setTimeout(function(){ BMap.Convertor.translate(gpsPoint,0,translateCallback); //真实经纬度转成百度坐标}, 2000);</script>
批量转换的示例接口
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="initial-scale=1.0, user-scalable=no" /><style type="text/css">body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;}</style><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script><script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/changeMore.js"></script><title>批量坐标转换</title></head><body><div id="allmap"></div></body></html><script type="text/javascript">// 百度地图API功能var map = new BMap.Map("allmap");map.centerAndZoom(new BMap.Point(116.404, 39.915), 15);var i;var markers = [];map.addEventListener("click",function(e){ alert(e.point.lng + "," + e.point.lat);});//注意:百度和谷歌的经纬度坐标顺序是相反的。var points = [new BMap.Point(116.3786889372559,39.90762965106183), new BMap.Point(116.38632786853032,39.90795884517671), new BMap.Point(116.39534009082035,39.907432133833574), new BMap.Point(116.40624058825688,39.90789300648029), new BMap.Point(116.41413701159672,39.90795884517671) ];function callback(xyResults){ var xyResult = null; for(var index in xyResults){ xyResult = xyResults[index]; if(xyResult.error != 0){continue;}//出错就直接返回; var point = new BMap.Point(xyResult.x, xyResult.y); var marker = new BMap.Marker(point); map.addOverlay(marker); map.setCenter(point);// 由于写了这句,每一个被设置的点都是中心点的过程 }}setTimeout(function(){ BMap.Convertor.transMore(points,2,callback); //一秒之后开始进行坐标转换。参数2,表示是从GCJ-02坐标到百度坐标。参数0,表示是从GPS到百度坐标}, 1000);</script>
0 0
- 百度API接口把GPS坐标转换为百度坐标
- GPS坐标转换为百度地图坐标
- GPS坐标转换为百度坐标,百度坐标的转换,原始坐标转百度坐标
- 百度坐标转换GPS坐标
- GPS经纬度转换为百度坐标
- BMap百度地图坐标转换为GPS坐标
- 通过Java将GPS坐标转换为百度地图坐标
- BMap百度地图坐标转换为GPS坐标
- GPS坐标转换为百度坐标的方法
- GPS坐标(经纬度)转换为百度坐标(经纬度)续
- GPS坐标转换为百度坐标 js封装
- GPS坐标转换为百度坐标 js封装
- 百度坐标转换gps坐标工具类
- GPS坐标转换成百度坐标
- 百度坐标和GPS坐标转换
- PhoneGap 获取GPS坐标转换百度坐标
- gps坐标转换百度坐标本地化
- GPS坐标与百度坐标转换
- iOS --检测更新版本
- C++设计模式实现--观察者
- ASP.NET中如何实现FORM认证登录
- install ruby to mac
- Ubuntu文件命令
- 百度API接口把GPS坐标转换为百度坐标
- GridView常见的属性
- 不常用的define
- win8.1使用体验
- Form验证
- Amdahl定律
- 学习编程一年了,从这周开始开博
- 移动硬盘文件误删如何快速找回
- 车辆保险详细说明举例介绍