HTML5 基礎(chǔ)知識(shí),第 3 部分: HTML5 API 的強(qiáng)大功能
應(yīng)用程序編程接口 是編程指令集合和訪問(wèn)軟件應(yīng)用程序的標(biāo)準(zhǔn)。通過(guò)一個(gè) API,您可以利用 API 提供的服務(wù)設(shè)計(jì)出強(qiáng)大的產(chǎn)品。
HTML5 提供了一些新的 API。例如:
draggable
屬性支持的拖放 APIcontenteditable
屬性支持的編輯 API本文主要關(guān)注于兩個(gè) API:Geolocation 和 Web Worker。首先,本文將分析 API;然后,再創(chuàng)建一個(gè)使用這兩種 API 的頁(yè)面。
您可以使用 Geolocation API 來(lái)確定和分享地理位置。這個(gè) API 會(huì)返回經(jīng)度和緯度坐標(biāo) — 企業(yè)可以利用這些信息向這個(gè)坐標(biāo)附近的區(qū)域提供服務(wù)。這些服務(wù)一般指的是基于位置的服務(wù)(LBS)。
LBS 指的是用于確定所監(jiān)控設(shè)備的物理位置的地理數(shù)據(jù)源,因此也可以確定該位置的人們。這個(gè)功能最有趣的地方是它使人們能夠圍繞某些關(guān)注的地理位置點(diǎn)周圍的市場(chǎng)進(jìn)行交互。
企業(yè)實(shí)際上是為客戶創(chuàng)造優(yōu)質(zhì)、實(shí)用的服務(wù)和價(jià)值,同時(shí)為利益干系人、債權(quán)人、股東、員工和供應(yīng)商創(chuàng)造經(jīng)濟(jì)和財(cái)務(wù)效益。由 Geolocation 支持的 LBS 能夠使用非瀏覽器設(shè)備或?yàn)g覽器來(lái)簡(jiǎn)化對(duì)貨物或人的追蹤和監(jiān)控。在商業(yè)應(yīng)用上,地理位置指的是利用地理信息來(lái)確定人或事的位置,然后將這些信息銷售給任何需要使用這些信息的人, 他們可能利用這個(gè)位置信息來(lái)進(jìn)行社交活動(dòng)、商業(yè)應(yīng)用或其他用途,前提是這些信息的擁有者已經(jīng)授權(quán)使用這些信息。
Geolocation API 是基于新增加的全局對(duì)象 navigator
:navigator.geolocation
。JavaScript 對(duì)象 navigator
包含了很有用的有關(guān)訪問(wèn)者的瀏覽器和系統(tǒng)的信息。Geolocation 可以使用 IP 地址、基于 Web 的數(shù)據(jù)庫(kù)、無(wú)線網(wǎng)絡(luò)連接和三角測(cè)量或 GPS 技術(shù)來(lái)確定經(jīng)度和緯度。一定要注意 Geolocation 所提供信息的精確性會(huì)由于獲取信息的方式不同而有所差別。有時(shí)候,您可能無(wú)法精確地讀取某些位置的地理信息,甚至完全無(wú)法讀取。
腳本可以使用 navigator.geolocation
對(duì)象來(lái)確定用戶所使用設(shè)備的位置信息。在獲得了位置信息之后,腳本會(huì)基于所獲得的數(shù)據(jù)創(chuàng)建和生成一個(gè)位置對(duì)象。
navigator.geolocation
對(duì)象具有 3 個(gè)方法:
getCurrentPosition()
watchPosition()
clearWatch()
getCurrentPosition()
方法能夠獲取用戶的當(dāng)前位置,但是只能獲取一次。當(dāng)腳本調(diào)用這個(gè)方法時(shí),這個(gè)方法會(huì)以異步方式獲取宿主設(shè)備的當(dāng)前位置。異步通信 表示發(fā)送者和接收者在通信時(shí)并不是同時(shí)加入的。使用異步的通信方式使瀏覽器能夠繼續(xù)執(zhí)行其他活動(dòng),這樣它就不需要等待接收實(shí)體的響應(yīng)。
getCurrentPosition()
方法最多可以接收 3 個(gè)參數(shù):
geolocationSuccess
。 當(dāng)前位置的回調(diào)函數(shù)(必需的)geolocationError
。 出現(xiàn)錯(cuò)誤時(shí)執(zhí)行的回調(diào)函數(shù)(可選的)geolocationOptions
。 地理位置選項(xiàng)(可選的)
navigator.geolocation.getCurrentPositon()
方法會(huì)將宿主設(shè)備的當(dāng)前位置通過(guò)一個(gè) Position
對(duì)象以參數(shù)的形式返回給回調(diào)函數(shù) geolocationSuccess
。如果出現(xiàn)錯(cuò)誤,那么它會(huì)使用一個(gè) PositionError
對(duì)象來(lái)調(diào)用回調(diào)函數(shù) geolocationError
。您可以為 geolocationOptions
設(shè)置 3 個(gè)屬性:enableHighAccuracy
、timeout
和 maximumAge
。如果設(shè)備支持,分別指定位置返回的超時(shí)時(shí)間和緩存位置可以使用的最長(zhǎng)時(shí)間,那么這些可選屬性就能夠提高精確度。
getCurrentPosition()
方法的調(diào)用方式如下所示:
void navigator.geolocation.getCurrentPosition( geolocationSuccess, geolocationError, geolocationOptions);
watchPosition()
方法會(huì)定期查詢用戶的位置,觀察用戶位置是否發(fā)生了變化。它最多可以接收 3 個(gè)參數(shù)。
當(dāng)調(diào)用 watchPosition
時(shí),它會(huì)異步地啟動(dòng)一個(gè)觀察進(jìn)程,包括獲取一個(gè)新的 Position
對(duì)象和創(chuàng)建一個(gè) watchID
。如果獲取位置成功,那么關(guān)聯(lián)了 Position
對(duì)象的geolocationSuccess
方法就被調(diào)用。如果執(zhí)行帶有非空的 geolocationError
參數(shù)的方法出現(xiàn)錯(cuò)誤,那么這個(gè)方法會(huì)產(chǎn)生一個(gè)以 PositionError
對(duì)象為參數(shù)的 geolocationError
。當(dāng)設(shè)備的位置發(fā)生變化時(shí),帶有新的 Position
對(duì)象的回調(diào)函數(shù)就會(huì)被調(diào)用。
watchPosition()
方法的調(diào)用方式如下所示:
long navigator.geolocation.watchPosition( geolocationSuccess, geolocationError, geolocationOptions);
clearWatch()
方法會(huì)終止一個(gè)仍在執(zhí)行的 watchPosition()
。這個(gè)方法只能有一個(gè)參數(shù)。被調(diào)用時(shí),它會(huì)查找之前聲明的 watchID
參數(shù),并立即停止它。
clearWatch()
方法的調(diào)用方式如下所示:
void navigator.geolocation.clearWatch(watchID)
Geolocation API 會(huì)返回一個(gè)地理位置對(duì)象 Position
。這個(gè)對(duì)象具有兩個(gè)屬性:timestamp
和 coords
。timestamp
屬性表示地理數(shù)據(jù)創(chuàng)建的時(shí)間。而 coords
屬性包含了 7 個(gè)屬性:
coords.latitude
。 估算的緯度coords.longitude
。 估算的經(jīng)度coords.altitude
。 估算的高度coords.accuracy
。 所得經(jīng)度和緯度的估算精度,以米為單位coords.altitudeAccuracy
。 所得高度的估算精度,以米為單位coords.heading
. 宿主設(shè)備的當(dāng)前移動(dòng)方向,以度為單位,相對(duì)于正北方向順時(shí)針方向計(jì)算coords.speed
. 設(shè)備的當(dāng)前對(duì)地速度,以米/秒為單位
這里只有 3 個(gè)屬性是必需的:coords.latitude
、coords.longitude
和 coords.accuracy
。其他屬性返回 null
,取決于設(shè)備及其交互的后端定位服務(wù)器的功能。heading
和 speed
屬性是基于用戶的前一個(gè)位置計(jì)算的(如果有)。
推薦文章
2025-01-18
2024-11-28
2024-11-09
2024-10-25
2024-06-25
2024-01-04
2023-11-06
2023-10-30
2023-10-13
2023-10-10
穩(wěn)定
產(chǎn)品高可用性高并發(fā)貼心
項(xiàng)目群及時(shí)溝通專業(yè)
產(chǎn)品經(jīng)理1v1支持快速
MVP模式小步快跑承諾
我們選擇聲譽(yù)堅(jiān)持
10年專注高端品質(zhì)開發(fā)聯(lián)系我們
友情鏈接: