GIS资源下载站  最全最大专业GIS、GPS、RS行业软件技术资料下载站!
用户登录  |  用户注册
体验新版(建设中...)  |  用户登录  |  用户注册  |  官方首页  |  购买地址  |  官方论坛 首 页 |  软件下载 |  技术文章 |  方案案例 |  新闻资讯 |  官方论坛
当前位置:gis软件_GPS导航_高清卫星地图_地理信息_网站源码_gis二次开发源码-专业gis软件下载基地技术文章GPS技术
百度地图API接口把GPS坐标转换为百度坐标
Tags:百度地图 电子地图 谷歌地图 百度坐标 GPS坐标     来源:本站整理    发布时间:2014-06-13 09:44:26        

http://developer.baidu.com/map/jsdemo/demo/convertor.js     这是单个坐标转换接口
 

http://developer.baidu.com/map/jsdemo/demo/changeMore.js   这是批量转换接口
 

[javascript] view plaincopy
  1. //2011-7-25 zhangying  
  2. (function(){  
  3. function load_script(xyUrl, callback){  
  4.     var head = document.getElementsByTagName('head')[0];  
  5.     var script = document.createElement('script');  
  6.     script.type = 'text/javascript';  
  7.     script.src = xyUrl;  
  8.     //借鉴了jQuery的script跨域方法  
  9.     script.onload = script.onreadystatechange = function(){  
  10.         if((!this.readyState  this.readyState === "loaded"  this.readyState === "complete")){  
  11.             callback && callback();  
  12.             // Handle memory leak in IE  
  13.             script.onload = script.onreadystatechange = null;  
  14.             if ( head && script.parentNode ) {  
  15.                 head.removeChild( script );  
  16.             }  
  17.         }  
  18.     };  
  19.     // Use insertBefore instead of appendChild  to circumvent an IE6 bug.  
  20.     head.insertBefore( script, head.firstChild );  
  21. }  
  22. function transMore(points,type,callback){  
  23.     var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from=" + type + "&to=4&mode=1";  
  24.     var xs = [];  
  25.     var ys = [];  
  26.     var maxCnt = 20;//每次发送的最大个数  
  27.     var send = function(){  
  28.         var url = xyUrl + "&x=" + xs.join(",") + "&y=" + ys.join(",") + "&callback=callback";  
  29.         //动态创建script标签  
  30.         load_script(url);  
  31.         xs = [];  
  32.         ys = [];  
  33.     }  
  34.     for(var index in points){  
  35.         if(index % maxCnt == 0 && index != 0){  
  36.             send();  
  37.         }  
  38.         xs.push(points[index].lng);  
  39.         ys.push(points[index].lat);  
  40.         if(index == points.length - 1){  
  41.             send();  
  42.         }  
  43.     }  
  44.       
  45. }  
  46.   
  47. window.BMap = window.BMap  {};  
  48. BMap.Convertor = {};  
  49. BMap.Convertor.transMore = transMore;  
  50. })();  


 

[javascript] view plaincopy
  1. //2011-7-25  
  2. (function(){        //闭包  
  3. function load_script(xyUrl, callback){  
  4.     var head = document.getElementsByTagName('head')[0];  
  5.     var script = document.createElement('script');  
  6.     script.type = 'text/javascript';  
  7.     script.src = xyUrl;  
  8.     //借鉴了jQuery的script跨域方法  
  9.     script.onload = script.onreadystatechange = function(){  
  10.         if((!this.readyState  this.readyState === "loaded"  this.readyState === "complete")){  
  11.             callback && callback();  
  12.             // Handle memory leak in IE  
  13.             script.onload = script.onreadystatechange = null;  
  14.             if ( head && script.parentNode ) {  
  15.                 head.removeChild( script );  
  16.             }  
  17.         }  
  18.     };  
  19.     // Use insertBefore instead of appendChild  to circumvent an IE6 bug.  
  20.     head.insertBefore( script, head.firstChild );  
  21. }  
  22. function translate(point,type,callback){  
  23.     var callbackName = 'cbk_' + Math.round(Math.random() * 10000);    //随机函数名  
  24.     var xyUrl = "http://api.map.baidu.com/ag/coord/convert?from="+ type + "&to=4&x=" + point.lng + "&y=" + point.lat + "&callback=BMap.Convertor." + callbackName;  
  25.     //动态创建script标签  
  26.     load_script(xyUrl);  
  27.     BMap.Convertor[callbackName] = function(xyResult){  
  28.         delete BMap.Convertor[callbackName];    //调用完需要删除改函数  
  29.         var point = new BMap.Point(xyResult.x, xyResult.y);  
  30.         callback && callback(point);  
  31.     }  
  32. }  
  33.   
  34. window.BMap = window.BMap  {};  
  35. BMap.Convertor = {};  
  36. BMap.Convertor.translate = translate;  
  37. })();  


今天在网页中有一个函数想转换单个的,有一个函数想批量转换,把这两个都引用进项目后,出现了错误,后面分析源代码之后,找出了原因,在于最后三个语句,他们都是相同的,后面一个加入的覆盖了前面一个,所以造成总有一个接口使用不了

因此,我把这两个接口合二为一,把源代码引用到自己的项目中,解决了问题
 


 

另外附上两个接口使用的源代码

单个转换的接口
 

[javascript] view plaincopy
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />  
  6. <style type="text/css">  
  7. body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;}  
  8. </style>  
  9. <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>  
  10. <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>  
  11. <title>GPS转百度</title>  
  12. </head>  
  13. <body>  
  14. <div id="allmap"></div>  
  15. </body>  
  16. </html>  
  17. <script type="text/javascript">  
  18.   
  19. // 百度地图API功能  
  20. //GPS坐标  
  21. var xx = 116.397428;  
  22. var yy = 39.90923;  
  23. var gpsPoint = new BMap.Point(xx,yy);  
  24.   
  25. //地图初始化  
  26. var bm = new BMap.Map("allmap");  
  27. bm.centerAndZoom(gpsPoint, 15);  
  28. bm.addControl(new BMap.NavigationControl());  
  29.   
  30. //添加谷歌marker和label  
  31. var markergps = new BMap.Marker(gpsPoint);  
  32. bm.addOverlay(markergps); //添加GPS标注  
  33. var labelgps = new BMap.Label("我是GPS标注哦",{offset:new BMap.Size(20,-10)});  
  34. markergps.setLabel(labelgps); //添加GPS标注  
  35.   
  36. //坐标转换完之后的回调函数  
  37. translateCallback = function (point){  
  38.     var marker = new BMap.Marker(point);  
  39.     bm.addOverlay(marker);  
  40.     var label = new BMap.Label("我是百度标注哦",{offset:new BMap.Size(20,-10)});  
  41.     marker.setLabel(label); //添加百度label  
  42.     bm.setCenter(point);  
  43.     alert(point.lng + "," + point.lat);  
  44. }  
  45.   
  46. setTimeout(function(){  
  47.     BMap.Convertor.translate(gpsPoint,0,translateCallback);     //真实经纬度转成百度坐标  
  48. }, 2000);  
  49. </script>  



 

批量转换的接口

[javascript] view plaincopy
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />  
  6. <style type="text/css">  
  7. body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;}  
  8. </style>  
  9. <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script>  
  10. <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/changeMore.js"></script>  
  11. <title>批量坐标转换</title>  
  12. </head>  
  13. <body>  
  14. <div id="allmap"></div>  
  15. </body>  
  16. </html>  
  17. <script type="text/javascript">  
  18.   
  19. // 百度地图API功能  
  20. var map = new BMap.Map("allmap");  
  21. map.centerAndZoom(new BMap.Point(116.404, 39.915), 15);  
  22. var i;  
  23. var markers = [];  
  24. map.addEventListener("click",function(e){  
  25.     alert(e.point.lng + "," + e.point.lat);  
  26. });  
  27. //注意:百度和谷歌的经纬度坐标顺序是相反的。  
  28. var points = [new BMap.Point(116.3786889372559,39.90762965106183),  
  29.               new BMap.Point(116.38632786853032,39.90795884517671),  
  30.               new BMap.Point(116.39534009082035,39.907432133833574),  
  31.               new BMap.Point(116.40624058825688,39.90789300648029),  
  32.               new BMap.Point(116.41413701159672,39.90795884517671)  
  33.              ];  
  34. function callback(xyResults){  
  35.  var xyResult = null;  
  36.  for(var index in xyResults){  
  37.   xyResult = xyResults[index];  
  38.   if(xyResult.error != 0){continue;}//出错就直接返回;  
  39.   var point = new BMap.Point(xyResult.x, xyResult.y);  
  40.      var marker = new BMap.Marker(point);  
  41.      map.addOverlay(marker);  
  42.      map.setCenter(point);// 由于写了这句,每一个被设置的点都是中心点的过程  
  43.     }  
  44. }  
  45.   
  46. setTimeout(function(){  
  47.     BMap.Convertor.transMore(points,2,callback);        //一秒之后开始进行坐标转换。参数2,表示是从GCJ-02坐标到百度坐标。参数0,表示是从GPS到百度坐标  
  48. }, 1000);  
  49. </script>  
[]
[返回上一页] [打 印] [作者:bbs.arceyes.com]
相关阅读
关 于 本 站  |  网 站 帮 助  |  广 告 合 作  |  下 载 声 明  |  友 情 连 接
      Copyright (C) 2006-2014 GisDown. All Rights Reserved