- 構建移動網站與APP:HTML 5移動開發入門與實戰(跨平臺移動開發叢書)
- 常新峰
- 1470字
- 2020-11-29 00:14:08
4.1 認識地理位置
4.1.1 緯度和經度坐標
緯度和經度是一種利用三度空間的球面來定義地球上空間的球面坐標系統,能夠標示地球上的任何一個位置。
談到經緯度,可以追溯到公元前344年,亞歷山大渡海南侵,隨軍的地理學家尼爾庫斯沿途搜索材料,準備繪制一幅世界地圖。尼爾庫斯發現沿著亞歷山大東征的路線,由西向東,無論季節變換與日照長短都很相仿。于是第一次在地球上劃出了一條緯線,這條線從直布羅陀海峽起,沿著托魯斯和喜馬拉雅山脈一直到太平洋。
經線又稱為子午線,定義為地球表面連接南北兩極的半圓弧。任何兩根經線的長度相同,相交于南北兩極,每根經線都有相對應的值,稱為經度。緯線定義為地球表面某個點隨著地球自轉所形成的軌跡,任何一根緯線都是圓形而且兩兩平行。
經1884年國際會議協商,決定以通過英國倫敦格林尼治天文臺(原址)的經線為起始線。這根經線稱本初子午線,以本初子午線為起點,向東為東經度(E),向西為西經度(W)。經度共360°,本初子午線為0°經線,東西經度各為180°,東、西經180°經線為同一條經線,統稱180°經線。
緯度以赤道為起點,赤道以北為北緯度(N),赤道以南為南緯度(S)。赤道是0°緯度,北緯度的最大值是90°,即北極點;南緯度的最大值為90°,即南極點。
下面通過圖4.1來了解地球經緯度。

圖4.1 地球經緯度
4.1.2 定位數據
HTML 5通過Geolocation接口獲取用戶地理位置信息,開發者不需要關心接口是在什么設備上、使用什么底層技術去實現,只需要會簡單的調用即可。
一般來說,瀏覽器可以從設備中獲取以下數據來源:
● IP地址。
● GPS(Global Positioning System,全球定位系統)。
● RFID(Radio Frequency IDentification,射頻識別),如汽車防盜和無鑰匙開門系統的應用、門禁和安全管理系統。
● Wi-Fi地址。
● GSM或CDMA手機的ID。
● 用戶自定義的地理位置數據。
每種獲取方式的原理不同,所以在精準度上也會產生差異,比如使用筆記本連接Wi-Fi上網獲取的經緯度信息與使用手機在GSM上獲取的經緯度信息很可能會不完全一致。下面通過比對各項技術的優缺點讓讀者能夠更加全面地了解差異。表4-1列出了定位數據來源的優缺點。
表4-1 定位數據來源優缺點

HTML 5通過Geolocation除了能獲取到經緯度坐標外,還能提供位置坐標的精準度。對于某些較高級的硬件設備,瀏覽器通過Geolocation還能獲取到海拔、海拔精準度、行駛方向和速度等,開發者可以通過該接口獲取到與原生應用同樣豐富的數據形式,開發出更多酷炫的功能,而這一切都可以在瀏覽器里實現。
4.1.3 構建地理位置應用
地理位置信息涉及用戶的隱私,HTML 5 Geolocation設計之初就考慮到了這一點,除非用戶明確允許,否則無法獲取位置信息。
當用戶訪問一張使用HTML 5 Geolocation功能開發的頁面時,瀏覽器會出現用戶授權提示條。圖4.2顯示了在Chrome瀏覽器下用戶授權條的樣式。

圖4.2 Chrome瀏覽器下Geolocation功能授權提示
不同的瀏覽器,Geolocation用戶授權提示信息形式也不同。Firefox的授權提示如圖4.3所示。

圖4.3 Firefox瀏覽器下Geolocation功能授權提示
HTML 5 Geolocation方法在使用時除了會進行用戶授權,還允許對過往進行授權的網站進行再修改。用戶可以通過修改網站授權保護自己的隱私,比如在咖啡廳使用帶有Geolocation的應用查找周邊的商戶信息,這時通過經緯度信息定位周邊商戶,可以方便地尋找信息,但當環境發生變化時,如回到家中,此時可以重新將授權私有,以起到保護作用。下面將通過圖示來學習如何對已授權的網站取消授權。
以Chrome瀏覽器為例,首先點擊瀏覽器導航欄右側圓形類似定位的按鈕,如圖4.4所示。然后點擊彈出提示框的“管理位置設置”鏈接,此時會重新打開一個窗口,鏈接地址為“chrome://settings/contentExceptions#location”,新開的頁面顯示當前瀏覽器的地理位置信息情況列表,用戶可以通過編輯列表選擇是否再次對網站進行授權,如圖4.5所示。

圖4.4 點擊Chrome瀏覽器導航欄右側定位按鈕

圖4.5 Chrome瀏覽器Geolocation授權編輯列表
- HornetQ Messaging Developer’s Guide
- Extending Jenkins
- Android Studio Essentials
- PHP 7底層設計與源碼實現
- Learn Programming in Python with Cody Jackson
- C語言程序設計
- 零基礎入門學習Python
- 自制編程語言
- UML 基礎與 Rose 建模案例(第3版)
- 數據結構與算法分析(C++語言版)
- 常用工具軟件立體化教程(微課版)
- Visual Basic程序設計習題與上機實踐
- Unity 2018 Augmented Reality Projects
- Illustrator CS6設計與應用任務教程
- Application Development with Parse using iOS SDK