HTML5的Geolocation地理位置定位API使用教程

在手持設備如此普遍的今天,位置信息對于應用程序來講是極其重要的,打車應用可以根據(jù)用戶的位置信息呼叫附近的車輛,團購軟件可以根據(jù)當前的位置推薦附近的影院和美食,地圖應用可以根據(jù)用戶的位置快速規(guī)劃到目的地的路線,可以說位置信息對于移動應用是不可或缺的。
為了順應這個潮流,HTML5為我們提供了Geolocation庫,有了它我們就能夠在Web應用中輕而易舉地實現(xiàn)上述這些功能。那么今天我就為大家介紹一下這個庫的使用。
基本用法
首先,我們可以從瀏覽器的對象中通過geolocation屬性獲取到一個Geolocation的實例,如下圖所示:
圖中我們可以看到,Geolocation類有三個常用的方法,他們分別是:
1.getCurrentPosition: 用于獲取當前的位置信息
2.watchPosition: 用于在位置變化時實時監(jiān)測位置信息
3.clearWatch: 取消正在運行的監(jiān)測操作
我們先來看一下getCurrentPosition方法,下面是它的函數(shù)簽名:
一旦這段代碼運行起來,瀏覽器窗口就會彈出一個確認框,請求用戶進行位置定位的授權:
如果我們點擊Allow允許該站點進行位置定位,該函數(shù)就開始從設備獲取位置信息,并觸發(fā)成功的回調函數(shù),并將位置信息對象傳入回調函數(shù)中,上面的代碼中我們在控制臺打印了position,控制臺信息如下:
可以看到,position實際上是一個Geoposition對象的實例,其中包括coords和timestamp兩個屬性,后者是一個時間戳,記錄獲取到位置時的時間,coords里面包含了很多位置有關的信息:
accuracy: 位置的精確度范圍,單位為米
altitude: 海拔高度,單位為米,如果設備不支持高度感應,則該屬性為null
altitudeAccuracy: 海拔精確度范圍,單位為米,如果設備不支持高度感應,則該屬性為null
speed: 設備移動的速度,單位為米/秒,如果設備不能提供速度信息,該屬性為null
heading: 當前移動的方向,以數(shù)字表示,單位為角度,以順時針[0, 360)度表示偏離正北方的角度,0表示正北方向,90度表示正東方向,180度表示正南方向,270表示正西方向;需要注意的是,如果speed為0,則heading會是NaN,如果設備不能提供方向信息,則該屬性為null
longitude: 經(jīng)度信息
latitude: 緯度信息
我們在成功的回調函數(shù)中接收到這些信息,可以根據(jù)實際的設備和應用場景獲取相應的信息,做進一步的操作。
回到剛才的確認框,如果我們點擊了Block阻止該站點獲取當前的位置信息,代碼就會授權失敗,相應地,失敗的回調函數(shù)就會被觸發(fā),error錯誤對象也會被傳入回調函數(shù),我們的打印信息如下:
可以看到error參數(shù)是一個PositionError實例,包含一個錯誤碼code和message,分別表示錯誤的類型和錯誤提示消息,其中錯誤碼有以下幾種:
其中timeout是設定地理位置獲取的超時時間(單位為毫秒,用戶選擇允許的時間不計算在內(nèi));而maximumAge表示允許設備從緩存中讀取位置,緩存的過期時間,單位是毫秒,設為0來禁用緩存讀取。如果返回的是緩存中的時間,會在timestamp中反映出來。
相關文章
- Microdata作為HTML5新增的一個特性,它允許開發(fā)者在HTML文檔中添加更多的語義信息,以便于搜索引擎和瀏覽器更好地理解頁面內(nèi)容,本文將探討HTML5中Microdata的使用方法以及2025-04-21
- 在HTML語法中,表格主要通過< table >、< tr >和< td >3個標簽構成,本文通過實例代碼講解HTML5表格語法格式,感興趣的朋友一起看看吧2025-04-21
- 這篇文章主要介紹了HTML5中使用媒體查詢和Flexbox進行響應式布局的方法,簡要介紹了CSS Grid布局的基礎知識和如何實現(xiàn)自動換行的網(wǎng)格布局,感興趣的朋友一起看看吧2025-04-21
基于Canvas的Html5多時區(qū)動態(tài)時鐘實戰(zhàn)代碼
本文介紹了如何使用Canvas在HTML5上實現(xiàn)一個多時區(qū)動態(tài)時鐘的web展示,通過Canvas的API,可以繪制出6個不同城市的時鐘,并且這些時鐘可以動態(tài)轉動,每個時鐘上都會標注出對應的2025-03-11HTML5 data-*自定義數(shù)據(jù)屬性的示例代碼
HTML5的自定義數(shù)據(jù)屬性(data-*)提供了一種標準化的方法在HTML元素上存儲額外信息,可以通過JavaScript訪問、修改和在CSS中使用,文章還介紹了高級用法,如存儲JSON數(shù)據(jù)、事2025-03-11- 在HTML5中,下拉框(<select>標簽)作為表單的重要組成部分,為用戶提供了一個從預定義選項中選擇值的方式,本文將深入探討<select>標簽的屬性、樣式,并重點介2025-02-27
- 本文介紹了HTML5InputDatePicker對象表示HTML``元素,是HTML5中的新對象,介紹了日期、周、月份、時間、日期+時間、本地日期時間等不同類型的日期選擇器,感興趣的朋友一起看2025-02-17
- 本文介紹了HTML5中的超鏈接、相對路徑和圖片的使用方法,超鏈接可以創(chuàng)建指向另一個文檔或頁面內(nèi)部書簽的鏈接,相對路徑用于在同一服務器內(nèi)部跳轉頁面,圖片標簽用于引入外部圖2025-02-17
- 本文介紹了HTML5超鏈接的創(chuàng)建方法,包括基本語法、創(chuàng)建圖像超鏈接的邊框去除方法以及錨點鏈接的使用,還討論了超鏈接的四種不同狀態(tài)(link、visited、hover、active)的CSS樣2025-02-17
- 最近看一些技術網(wǎng)站發(fā)現(xiàn)了details 標簽的妙用,這個不用js即可實現(xiàn)展開/收縮信息,很方便用來讓用戶先才答案,然后下面點擊再給出答案的效果,這里就為大家簡單介紹一下,2024-11-03