HTML5的定位接口
生活随笔
收集整理的這篇文章主要介紹了
HTML5的定位接口
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
當打開地圖首先想知道的自己的位置。通過設備獲取位置的手段有三類 GPS,LBS,IP地址。GPS是基于衛星的方式,生活中并不常用。LBS是依靠基站信號通過定位算法獲取位置的方式,算是最常用的一類方式。IP地址定位聽起來有些陌生,但是也是一種常用的定位方式,只要你的手機通過WIFI連入網絡時基本都會用到IP地址定位 ? ?
? ? ? ? 挺早以前就在Google Map上見識過IP定位,感覺很神奇,我電腦上也沒有GPS,也沒有GMS 它是怎么獲取我的位置。查了些資料才知道這叫做IP定位。當時Google Map中這個定位的偏差還挺大,定位功能按鈕只是個很不顯眼的小點。 點擊按鈕后瀏覽器都會有個安全提示(google 想要跟蹤你的實際位置) 心虛的人一般都不會允許。如下圖
效果如下: http://jsfiddle.net/wlygis/8aNwp/embedded/result,js/
? ? ? ? 挺早以前就在Google Map上見識過IP定位,感覺很神奇,我電腦上也沒有GPS,也沒有GMS 它是怎么獲取我的位置。查了些資料才知道這叫做IP定位。當時Google Map中這個定位的偏差還挺大,定位功能按鈕只是個很不顯眼的小點。 點擊按鈕后瀏覽器都會有個安全提示(google 想要跟蹤你的實際位置) 心虛的人一般都不會允許。如下圖
在Chorme 和Firefox中會有如下提示。 選擇允許后都可以在地圖上進行定位。
| Chorme?瀏覽器 | Firefox瀏覽器 |
| | |
? ? ? ? ? ?現在我在百度地圖和高德地圖上都沒找到定位的功能按鈕,挺奇怪的,不過它們的地圖API中卻都提供了IP定位的接口。 下面我寫了一個程序對HTML5,百度定位接口,高德定位接口進行了對比測試。
// 驗證瀏覽器 function isGeolocationAPIAvailable() {var location = "您的瀏覽器不支持IP定位!請使用IE10以上版本或者Chorme瀏覽";if (window.navigator.geolocation) {location = "您的瀏覽器支持IP定位!";nav = window.navigator;}document.getElementById("hint").innerHTML = location; }//調用HTML5接口實現IP定位 function requestPosition() {if (nav != null) {var geoloc = nav.geolocation;if (geoloc != null) {geoloc.getCurrentPosition(successCallback);} else {alert("你的瀏覽器不支持 HTML5的Geolocation API!");}} else {alert("Navigator對象沒有發現!");} } //監聽IP位置變化 可以喲個clearwatch 結束監聽 function listenForPositionUpdates() {if (nav != null) {var geoloc = nav.geolocation;if (geoloc != null) {watchID = geoloc.watchPosition(successCallback);} else {alert("你的瀏覽器不支持 HTML5的Geolocation API!");}} else {alert("Navigator對象沒有發現!");} }var acc; //誤差變量 //IP定位的回調函數; function successCallback(position) {var x = position.coords.longitude;var y = position.coords.latitude;acc = position.coords.accuracy;document.getElementById("xy").value = y + "," + x;gmapurl = gmapurl + y + "," + x + "&zoom=19&size=400x400&sensor=false"var gpsPoint = new BMap.Point(x, y);//將GPS坐標進行轉換,返回和百度地圖匹配的坐標BMap.Convertor.translate(gpsPoint, 0, translateCallback); //真實經緯度轉成百度坐標}
效果如下: http://jsfiddle.net/wlygis/8aNwp/embedded/result,js/
(點擊圖片打開調試界面)
? ? ? ? 經過對比較我發現,其實百度高德的定位接口都是封裝了HTML5的位置接口。定位出來的結果相同, 如果只是想是使用一下IP定位這個功能的朋友完全可以直接使用HTML5來實現,可以省去使用第三方的類庫。 注意:HTML5返回的坐標數據是WGS84坐標系統的數據。國內在線地圖都是經過位置偏移的, 如果需要地圖上標注,需要使用地圖廠家提供的 GPS數據轉換接口進行轉換才能夠在地圖上正確顯示。 Google Map就沒有做這個轉換,我對HTML5返回的坐標數據進行了測試,在Google Earth上查詢的結果和Google Map中查詢的位置不一致,Google Earth的結果和百度和高德地圖上顯示的是一致的,這說明Google Map和其他國內在線地圖一樣,對顯示的數據做了偏移處理。但是在標記HTML5返回的位置時沒有做偏移處理。這個比較遺憾,惟一有定位功能的地圖還不能正確標記位置。 最后說說這個IP定位精度,我自己使用的感受就是IP定位有些時候準的驚人,有些時候偏的離譜。導致這個問題的原因,主要是IP定位并不是依靠你設備的IP或者說MAC進行定位,而是通過設備訪問公網的路由進行定位的。一般你看到的定位結果是你上網入口的路由所在的地址。隨著智能路由的普及這種定位方式會越來越準確。做社區LBS應用的同學們可以仔細想想如何把這個技術應用起來。 好就寫到這了 歡迎留言交流。如果大家想進一步了解HTML5定位接口詳細內容可以參考
http://www.w3schools.com/HTML/html5_geolocation.asp
LBS公眾帳號:LBSNew? 二維碼
本文原創:歡迎轉載?請注明來源作者wlygis。
總結
以上是生活随笔為你收集整理的HTML5的定位接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子电路学习笔记(3)——电感
- 下一篇: 下拉刷新和上拉加载 php,怎样操作vu