HTML5 地理位置定位(HTML5 Geolocation)

??? 地理位置(Geolocation)是 HTML5 的重要特性之一,提供了確定用戶位置的功能,借助這個特性能夠開發基于位置信息的應用。今天這篇文章向大家介紹一下HTML5 地理位置定位的基本原理及各個瀏覽器的數據精度情況。

??? 在訪問位置信息前,瀏覽器都會詢問用戶是否共享其位置信息,以 Chrome 瀏覽器為例,如果您允許 Chrome 瀏覽器與網站共享您的位置,Chrome 瀏覽器會向 Google 位置服務發送本地網絡信息,估計您所在的位置。然后,瀏覽器會與請求使用您位置的網站共享您的位置。

??? HTML5?Geolocation API 使用非常簡單,基本調用方式如下:

if (navigator.geolocation) {navigator.geolocation.getCurrentPosition(locationSuccess, locationError,{// 指示瀏覽器獲取高精度的位置,默認為falseenableHighAcuracy: true,// 指定獲取地理位置的超時時間,默認不限時,單位為毫秒timeout: 5000,// 最長有效期,在重復獲取地理位置時,此參數指定多久再次獲取位置。maximumAge: 3000});
}else{alert("Your browser does not support Geolocation!");
}
locationError為獲取位置信息失敗的回調函數,可以根據錯誤類型提示信息:

locationError: function(error){switch(error.code) {case error.TIMEOUT:showError("A timeout occured! Please try again!");break;case error.POSITION_UNAVAILABLE:showError('We can\'t detect your location. Sorry!');break;case error.PERMISSION_DENIED:showError('Please allow geolocation access for this to work.');break;case error.UNKNOWN_ERROR:showError('An unknown error occured!');break;}
}
locationSuccess為獲取位置信息成功的回調函數,返回的數據中包含經緯度等信息,結合Google Map API 即可在地圖中顯示當前用戶的位置信息,如下:

locationSuccess: function(position){var coords = position.coords;    var latlng = new google.maps.LatLng(// 維度coords.latitude,// 精度coords.longitude);  var myOptions = {  // 地圖放大倍數  zoom: 12,  // 地圖中心設為指定坐標點  center: latlng,  // 地圖類型  mapTypeId: google.maps.MapTypeId.ROADMAP  };  // 創建地圖并輸出到頁面  var myMap = new google.maps.Map(  document.getElementById("map"),myOptions  );  // 創建標記  var marker = new google.maps.Marker({  // 標注指定的經緯度坐標點  position: latlng,  // 指定用于標注的地圖  map: myMap});//創建標注窗口  var infowindow = new google.maps.InfoWindow({  content:"您在這里<br/>緯度:"+  coords.latitude+  "<br/>經度:"+coords.longitude  });  //打開標注窗口  infowindow.open(myMap,marker); 
}
經過測試,Chrome/Firefox/Safari/Opera四個瀏覽器獲取到的位置信息都是一摸一樣的,而IE瀏覽器的和上面幾款瀏覽器獲取到的數據不一樣。

位置服務用于估計您所在位置的本地網絡信息包括:有關可見 WiFi 接入點的信息(包括信號強度)、有關您本地路由器的信息、您計算機的 IP 地址。位置服務的準確度和覆蓋范圍因位置不同而異。 

  總的來說,在PC的瀏覽器中?HTML5 的地理位置功能獲取的位置精度不夠高,如果借助這個?HTML5 特性做一個城市天氣預報是綽綽有余,但如果是做一個地圖應用,那誤差還是太大了。不過,如果是移動設備上的HTML5 應用,可以通過設置?enableHighAcuracy 參數為 true,調用設備的 GPS 定位來獲取高精度的地理位置信息。

轉自:http://www.cnblogs.com/lhb25/archive/2012/07/10/html5-geolocation-api-demo.html

轉載于:https://www.cnblogs.com/hdchangchang/p/3965343.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376336.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376336.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376336.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2016騰訊安全挑戰賽第一輪-PC游戲方向

0x00 查殼 無殼的VC程序 0x01 測試 沒有消息彈窗&#xff0c;嘗試對函數下斷點。 OD載入后&#xff0c;CtrlN查找函數&#xff0c;找到GetDlgItem 程序運行起來&#xff0c;等輸入完后點擊確定后程序斷下。一路F8就來到這里 00401EED . E8 6A5B0000 call Tenc…

49-今日交易總結.(2015.1.13)

49-今日交易總結今天交易情況不好&#xff0c;主要犯了虧損時還連續加倉的錯誤。作為一個交易者&#xff0c;虧損時&#xff0c;繼續加倉&#xff0c;認為市場會向交易的方向變化&#xff0c;一次性把虧損的全部撈回來&#xff0c;還能賺一筆。這是一種賭徒心理。永遠不要再虧損…

電商導購過冬:蘑菇街醞釀出售 美麗說轉型時尚

一度紅火的第三方導購網站正因為阿里巴巴過山車式的態度而呈現出急劇下滑的軌跡。 2011年&#xff0c;以美麗說、蘑菇街為代表的導購網站蜂擁而起。彼時&#xff0c;兩者還能頻繁出現在阿里巴巴的官方活動中。然而&#xff0c;2012年5月&#xff0c;阿里巴巴集團董事局主席馬云…

JavascriptDOM(三)

簡介 今天學習第二天的知識,js和BOM對象,再接再厲,fighting~學習原則 腳踏實地的走好每一步,要想學好高級部分,基礎知識必須扎實呀 掌握基本語法,完成小案例,寫博客作總結,基本就是這個節奏,下面我們一起快速入門吧JavaScript快速入門 1. js簡介 1.js基于對象和事件驅動的腳本語…

看雪 2016CrackMe 攻防大賽 - 1-Crack_Me-涼颼颼

環境&#xff1a; Windows xp 工具&#xff1a; IDA EXEINFOPE OD 0x00 查殼 EXEINFOPE查殼&#xff0c; 無殼 0x01 分析 if ( (unsigned __int16)wParam 0x40B ) // 成功{*(_OWORD *)v22 xmmword_41DB98;v25 0;v23 xmmword_41DBA8;v24 xmmword_41DBB8;memset_4039D0…

JS 或css教程 識別 IE版本的幾種方法

今天收藏了這幾種關于識別ie版本的幾種代碼&#xff0c;有需要的朋友參考一下&#xff1a;var isIE!!window.ActiveXObject;var isIE6isIE&&!window.XMLHttpRequest;var isIE8isIE&&!!document.documentMode;var isIE7isIE&&!isIE6&&!isIE8;if…

使用CSDN-markdown編輯器

這里寫自定義目錄標題歡迎使用Markdown編輯器新的改變功能快捷鍵合理的創建標題&#xff0c;有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個適合你的列表創建一個表格設定內容居中、居左、居右SmartyPants創建一個自定義列表如何創建一個注…

C++ vector類詳解

轉自http://blog.csdn.net/whz_zb/article/details/6827999 vector簡介 vector是STL中最常見的容器&#xff0c;它是一種順序容器&#xff0c;支持隨機訪問。vector是一塊連續分配的內存&#xff0c;從數據安排的角度來講&#xff0c;和數組極其相似&#xff0c;不同的地方就是…

ViewPager的使用方法和實現過程

看圖先&#xff1a; 頁面中填充內容是隨機關鍵詞飛入和飛出動畫效果&#xff0c;隨后會更新&#xff0c;現在請先無視吧 首先是 導入jar包 下載地址&#xff1a; android-support-v4.jar 布局文件里添加viewPager布局 [html] view plaincopyprint?<android.support.v4.vi…

如何通過瀏覽器在所有響應內容中查找文本

使用瀏覽器的開發者工具查找響應文件的內容 ** Chrome ** 版本&#xff1a; 快捷鍵&#xff1a;CtrlShiftF 可以看到已經查找出來了 ** firefox ** 版本

【Leetcode】【Easy】Implement strStr()

Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 解題&#xff1a; 本題為典型的KMP算法考察題&#xff0c;KMP算法描述為&#xff1a; 設主串S&#xff0c;匹配串P&#xff0c;i為S的索引下…

Android Animations動畫使用詳解

一、動畫類型 Android的animation由四種類型組成&#xff1a;alpha、scale、translate、rotate XML配置文件中 alpha漸變透明度動畫效果scale漸變尺寸伸縮動畫效果translate畫面轉換位置移動動畫效果rotate畫面轉移旋轉動畫效果Java Code代碼中 AlphaAnimation漸變透明度動畫效…

Jenkins入門指南

新手學習使用Jenkins 安裝好Jenkins后如何運行腳本 1.新建item 2.輸入任務名稱&#xff0c;選擇項目類型&#xff0c;點擊確定 3.填個描述就好了&#xff0c;新手學jenkins&#xff0c;其他都不看&#xff0c;跑起來再說 4.點這個高級&#xff0c;選擇你要運行的腳本所在…

Sublime Text 3 史上最性感的編輯器

↑ ↑ ↑ ↑ ↑ 請看文件夾 ↑ ↑ ↑ ↑ ↑ 下載 / 安裝 windows / MAC OS 官網下載&#xff0c;雙擊安裝&#xff0c;這個都會吧&#xff5e; linux linux下安裝&#xff0c;一種辦法是從官網下載 tar.bz &#xff0c;手動安裝。 這里介紹用 apt-get 自己主動安裝方法&#xf…

[轉]怎么查看和修改 MySQL 的最大連接數?

使用 MySQL 數據庫的站點&#xff0c;當訪問連接數過多時&#xff0c;就會出現 "Too many connections" 的錯誤。出現這種錯誤有兩種情況&#xff0c;一種是網站訪問量實在太大&#xff0c;服務器已經負擔不起&#xff0c;此時就應該考慮負載均衡或者其它減少服務器壓…

對qps、tps、pv、uv的理解

QPS &#xff08;Queries Per Second&#xff09;&#xff1a;每秒查詢數&#xff08;個別地方叫每秒查詢率&#xff1f;每秒查詢率是個奇怪的東西&#xff0c;每小時時速&#xff1f;&#xff09;&#xff0c;表示系統在一秒內處理的查詢次數。 TPS&#xff08;Transactions …

swift入門之TableView

IOS8更新了&#xff0c;oc還將繼續但新增了swift語言&#xff0c;能夠代替oc編寫ios應用&#xff0c;本文將使用swift作為編寫語言&#xff0c;為大家提供step by step的教程。 工具 ios每次更新都須要更新xcode&#xff0c;這次也不例外&#xff0c;但使用xcode6&#xff0c;須…

Training-ActionBar

閱讀&#xff1a;http://developer.android.com/training/basics/actionbar/index.html 對于API11以下的兼容&#xff1a; Update your activity so that it extends ActionBarActivity. For example: public class Main Activit yextends ActionBarActivity{...} In your mani…

Jmeter BeanShell學習(一) - BeanShell取樣器(一)

通過利用BeanShell取樣器設置請求發送的參數。 第一步&#xff1a;添加BeanShell取樣器 第二步&#xff1a;在BeanShell中輸入執行的代碼 log.info("腳本開始執行"); //意思是將字符串輸出到日志消息中 vars.put("username","123163.com");//…

【轉】關于Python腳本開頭兩行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件編碼類型...

原文網址&#xff1a;http://www.crifan.com/python_head_meaning_for_usr_bin_python_coding_utf-8/ #!/usr/bin/python 是用來說明腳本語言是python的 是要用/usr/bin下面的程序&#xff08;工具&#xff09;python&#xff0c;這個解釋器&#xff0c;來解釋python腳本&#…