HTML5 geolocation和BaiduMap、BingMap、GoogleMap

HTML5的地理位置定位感觉是很cool的能力,我们公司原先的定位是在Android上完成的,现在我来尝试下使用HTML5的geolocation来做些事情看看。

HTML5 geolocation和BaiduMap、BingMap、GoogleMap

HTML5的地理定位的采集方式:1. IP地址,2. GPS定位,3. MAC地址,4. GSM基站网络,5. 用户定义的地址位

老规矩,先简单的尝试下geolocationAPI应用

先HTML的代码,那是相当简单

  1. <body>  
  2.     <input type="button" value="get Geo" />  
  3. </body>  
javaScript的代码如下
  1. $(  
  2. function() {  
  3.     $(":button").click(  
  4.     function() {  
  5.         navigator.geolocation.getCurrentPosition(  
  6.         function(e) { //成功回调   
  7.             $.log(e.coords.accuracy); //准确度   
  8.             $.log(e.coords.latitude); //纬度   
  9.             $.log(e.coords.longitude); //经度   
  10.             $.log(e.coords.altitude); //海拔高度   
  11.             $.log(e.coords.altitudeAccuracy); //海拔高度的精确度   
  12.             $.log(e.coords.heading); //行进方向   
  13.             $.log(e.coords.speed); //地面的速度   
  14.             $.log(new Date(e.timestamp).toLocaleDateString());//采集日期   
  15.             $.log(new Date(e.timestamp).toLocaleTimeString());//采集时间   
  16.         },  
  17.         function(e) { //失败回调   
  18.             $.log(e.message); //错误信息   
  19.             $.log(e.code); //错误代码   
  20.         },  
  21.         {//可选参数 JSON格式   
  22.             "enableHighAcuracy"false//是否启用高精确度模   
  23.             "timeout": 100, //在指定的时间内获取位置信息   
  24.             "maximumAge": 0//浏览器重新获取位置信息的时间间隔   
  25.         }  
  26.         );  
  27.     }  
  28.     );  
  29. }  
  30. );  
现在你点击按钮,就可以在控制台看到经纬度和采样日期时间了。

那获得了经纬度的值,必然首先要做的就是地图定位了,现在主流的地图服务我知道的有:baidu,google,和bing,下面我来测试我们得到的经纬度在这三个地图服务中取得的地图图像吧。

baidu和bing我都查了官方的sample,但是,但是,我要狠狠的批评google,我用chrome浏览器访问googleMapApi中的sample,竟然chrome告诉我“由于 google-developers.appspot.com 响应时间过长,导致“Google Chrome 浏览器”无法加载网页。该网站可能已崩溃,或者您的互联网连接出现了问题。”google,你看着办吧。

先看看我们的body

  1. <body>  
  2.     <div>  
  3.         <input type="button" value="get Geo" />  
  4.     </div>  
  5.     <div id="baiduMap" style="width: 300px; height: 300px; float: left;">  
  6.     </div>  
  7.     <div id="googleMap" style="width: 300px; height: 300px; float: left;">  
  8.     </div>  
  9.     <div id="bingMap" style="width: 300px; height: 300px; float: left; position: relative;">  
  10.     </div>  
  11. </body>  
然后引入三家的服务脚本
  1. <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>  
  2.   
  3. <script src="http://maps.google.com/maps/api/js?sensor=false"></script>  
  4.   
  5. <script charset="UTF-8" type="text/javascript" src="http://dev.ditu.live.com/mapcontrol/mapcontrol.ashx?v=6.2&mkt=en-us"></script>  
以下是测试代码
  1. $.log = function(msg) {  
  2.     console.log(msg);  
  3. }  
  4.   
  5. $(  
  6. function() {  
  7.     $(":button").click(  
  8.     function() {  
  9.         navigator.geolocation.getCurrentPosition(  
  10.         function(e) { //成功回调   
  11.             $.log(e.coords.accuracy); //准确度   
  12.             $.log(e.coords.latitude); //纬度   
  13.             $.log(e.coords.longitude); //经度   
  14.             $.log(e.coords.altitude); //海拔高度   
  15.             $.log(e.coords.altitudeAccuracy); //海拔高度的精确度   
  16.             $.log(e.coords.heading); //行进方向   
  17.             $.log(e.coords.speed); //地面的速度   
  18.             $.log(new Date(e.timestamp).toLocaleDateString()); //采集日期   
  19.             $.log(new Date(e.timestamp).toLocaleTimeString()); //采集时间   
  20.             createBaiduMap(e.coords.longitude, e.coords.latitude);  
  21.             createBingMap(e.coords.longitude, e.coords.latitude);  
  22.             createGoogleMap(e.coords.longitude, e.coords.latitude);  
  23.         },  
  24.         function(e) { //失败回调   
  25.             $.log(e.message); //错误信息   
  26.             $.log(e.code); //错误代码   
  27.         },  
  28.         {//可选参数 JSON格式   
  29.             enableHighAcuracy: false//是否启用高精确度模   
  30.             timeout: 100, //在指定的时间内获取位置信息   
  31.             maximumAge: 0//浏览器重新获取位置信息的时间间隔   
  32.         }  
  33.         );  
  34.     }  
  35.     );  
  36. }  
  37. );  
  38.   
  39.   
  40. function createBaiduMap(longitude, latitude) {  
  41.     var map = new BMap.Map("baiduMap");  
  42.     var point = new BMap.Point(longitude, latitude);  
  43.     map.centerAndZoom(point, 15);  
  44. }  
  45.   
  46. function createGoogleMap(longitude, latitude) {  
  47.     var map = new google.maps.Map(document.getElementById("googleMap"),  
  48.     {  
  49.         center: new google.maps.LatLng(latitude, longitude),  
  50.         zoom: 14,  
  51.         mapTypeId: google.maps.MapTypeId.ROADMAP,  
  52.         mapTypeControl: false,  
  53.         navigationControlOptions: { style: google.maps.NavigationControlStyle.SMALL }  
  54.     }  
  55.     );  
  56. }  
  57.   
  58. function createBingMap(longitude, latitude) {  
  59.     var map = new VEMap("bingMap");  
  60.     var LA = new VELatLong(latitude, longitude);  
  61.     map.LoadMap(LA, 14, VEMapStyle.Road, false, VEMapMode.Mode2D, true, 1);  
  62. }  

相关推荐