HTML5 Geolocation(地理定位)學習筆記

一、HTML5 Geolocation簡介

HTML5 Geolocation(地理定位)API用于獲取用戶的地理位置信息。通過這個API,可以獲取用戶的緯度、經度、海拔等信息。由于地理定位可能涉及用戶隱私,因此只有在用戶同意的情況下,才能獲取其位置信息。

Geolocation API支持以下瀏覽器:

  • Internet Explorer 9+

  • Firefox

  • Chrome

  • Safari

  • Opera

對于擁有GPS的設備(如iPhone),地理定位更加精確。

二、獲取用戶位置

1. 使用getCurrentPosition()方法

getCurrentPosition()方法用于獲取用戶的當前位置。如果成功,該方法會調用一個回調函數,并將位置信息作為參數傳遞給該函數。如果失敗,則會調用另一個回調函數(可選)來處理錯誤。

示例代碼:

HTML復制

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>HTML5 Geolocation 示例</title>
</head>
<body><p id="demo">點擊按鈕獲取您的位置:</p><button onclick="getLocation()">獲取位置</button><script>function getLocation() {if (navigator.geolocation) {navigator.geolocation.getCurrentPosition(showPosition, showError);} else {document.getElementById("demo").innerHTML = "該瀏覽器不支持獲取地理位置。";}}function showPosition(position) {document.getElementById("demo").innerHTML ="緯度: " + position.coords.latitude +"<br>經度: " + position.coords.longitude;}function showError(error) {switch (error.code) {case error.PERMISSION_DENIED:document.getElementById("demo").innerHTML = "用戶拒絕對獲取地理位置的請求。";break;case error.POSITION_UNAVAILABLE:document.getElementById("demo").innerHTML = "位置信息是不可用的。";break;case error.TIMEOUT:document.getElementById("demo").innerHTML = "請求用戶地理位置超時。";break;case error.UNKNOWN_ERROR:document.getElementById("demo").innerHTML = "未知錯誤。";break;}}</script>
</body>
</html>

預覽

示例說明:

  1. navigator.geolocation:檢查瀏覽器是否支持地理定位。

  2. getCurrentPosition():獲取用戶當前位置。第一個參數是成功回調函數,第二個參數是錯誤處理函數(可選)。

  3. showPosition():成功獲取位置后,顯示緯度和經度。

  4. showError():處理獲取位置時可能出現的錯誤。

三、在地圖中顯示位置

獲取到用戶的位置信息后,可以使用地圖服務(如Google Maps或百度地圖)將位置顯示在地圖上。

示例代碼:

HTML復制

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>HTML5 Geolocation 地圖顯示</title>
</head>
<body><p id="demo">點擊按鈕獲取您的位置并顯示在地圖上:</p><button onclick="getLocation()">獲取位置</button><div id="mapholder"></div><script>function getLocation() {if (navigator.geolocation) {navigator.geolocation.getCurrentPosition(showPosition, showError);} else {document.getElementById("demo").innerHTML = "該瀏覽器不支持獲取地理位置。";}}function showPosition(position) {var latlon = position.coords.latitude + "," + position.coords.longitude;var img_url = "http://maps.googleapis.com/maps/api/staticmap?center="+ latlon + "&zoom=14&size=400x300&sensor=false";document.getElementById("mapholder").innerHTML = "<img src='" + img_url + "'>";}function showError(error) {switch (error.code) {case error.PERMISSION_DENIED:document.getElementById("demo").innerHTML = "用戶拒絕對獲取地理位置的請求。";break;case error.POSITION_UNAVAILABLE:document.getElementById("demo").innerHTML = "位置信息是不可用的。";break;case error.TIMEOUT:document.getElementById("demo").innerHTML = "請求用戶地理位置超時。";break;case error.UNKNOWN_ERROR:document.getElementById("demo").innerHTML = "未知錯誤。";break;}}</script>
</body>
</html>

預覽

示例說明:

  1. showPosition():獲取到位置信息后,使用Google Maps的靜態地圖API生成地圖圖片,并顯示在頁面上。

  2. img_url:通過拼接緯度和經度,生成Google Maps的靜態地圖URL。

四、實時跟蹤用戶位置

watchPosition()方法用于實時跟蹤用戶的當前位置,并在用戶移動時更新位置信息。與getCurrentPosition()方法類似,watchPosition()也接受兩個回調函數:一個用于成功,一個用于錯誤處理。

示例代碼:

HTML復制

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>HTML5 Geolocation 實時跟蹤</title>
</head>
<body><p id="demo">實時跟蹤您的位置:</p><button onclick="getLocation()">開始跟蹤</button><script>function getLocation() {if (navigator.geolocation) {navigator.geolocation.watchPosition(showPosition, showError);} else {document.getElementById("demo").innerHTML = "該瀏覽器不支持獲取地理位置。";}}function showPosition(position) {document.getElementById("demo").innerHTML ="緯度: " + position.coords.latitude +"<br>經度: " + position.coords.longitude;}function showError(error) {switch (error.code) {case error.PERMISSION_DENIED:document.getElementById("demo").innerHTML = "用戶拒絕對獲取地理位置的請求。";break;case error.POSITION_UNAVAILABLE:document.getElementById("demo").innerHTML = "位置信息是不可用的。";break;case error.TIMEOUT:document.getElementById("demo").innerHTML = "請求用戶地理位置超時。";break;case error.UNKNOWN_ERROR:document.getElementById("demo").innerHTML = "未知錯誤。";break;}}</script>
</body>
</html>

預覽

示例說明:

  1. watchPosition():實時跟蹤用戶位置,并在用戶移動時更新位置信息。

  2. showPosition():顯示實時更新的緯度和經度。

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

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

相關文章

愛普生VG3225EFN壓控晶振5G基站低噪聲的解決方案

在 5G 通信網絡的高速發展中&#xff0c;系統噪聲的控制成為保障網絡可靠性與數據吞吐量的關鍵。愛普生 VG3225EFN 壓控晶振憑借其卓越的低噪聲特性&#xff0c;成為 5G 基站時鐘系統的理想選擇。通過創新的技術設計&#xff0c;這款晶振不僅為基站提供了穩定的時鐘基準&#x…

【問題解決】Linux安裝conda修改~/.bashrc配置文件后,root 用戶下顯示 -bash-4.2#

問題描述 在Linux安裝conda下的python環境時候&#xff0c;修改了~/.bashrc文件&#xff0c;修改完成后&#xff0c;再次進入服務器后&#xff0c;登錄時候顯示的不是正常的[rootlocalhost ~]#&#xff0c;而是-bash-4.2# 原因分析&#xff1a; 網上原因有&#xff1a;/root下…

機器學習knnlearn5

import numpy as np from os import listdir from sklearn.neighbors import KNeighborsClassifier as kNN# 此函數用于將一個32x32的文本文件轉換為一個1x1024的一維向量 def img2vector(filename):"""將32x32的文本文件轉換為1x1024的向量:param filename: 要…

git revert 用法實戰:撤銷一個 commit 或 merge

git revert 1 區別 ? 常規的 commit &#xff08;使用 git commit 提交的 commit&#xff09; ? merge commit 2 首先構建場景 master上的代碼 dev開發分支上&#xff0c;添加一個a標簽&#xff0c;并commit這次提交 切到master上&#xff0c;再次進行改動和提交 將de…

自然語言處理|高效法律助手:AI如何解析合同條款?

引言&#xff1a;法律 AI 的崛起 在數字化浪潮快速發展的今天&#xff0c;人工智能&#xff08;AI&#xff09;已不再是一個陌生的概念&#xff0c;它正以快速發展滲透到各個領域&#xff0c;法律行業也不例外。從智能合同審查到法律風險預測&#xff0c;AI 技術為法律工作帶來…

【數據分享】2000—2024年我國鄉鎮的逐年歸一化植被指數(NDVI)數據(年最大值/Shp/Excel格式)

之前我們分享過2000-2024年我國逐年的歸一化植被指數&#xff08;NDVI&#xff09;柵格數據&#xff0c;該逐年數據是取的當年月歸一化植被指數&#xff08;NDVI&#xff09;的年最大值&#xff01;另外&#xff0c;我們基于此年度柵格數據按照行政區劃取平均值&#xff0c;得到…

辦公網絡健康監控(域名健康監控)

需求 辦公室訪問一些網絡經常出現故障 現需要時時觀察監控這些網絡的健康 包含專線網等其他網絡 實施 支持 SNMP 且支持 Webhook 發送報警的開源監控系統 hertzbeat:關系型數據庫+時序數據庫; Zabbix:關系型數據庫; LibreNMS:關系型數據庫; Prometheus(包含ale…

藍橋杯 合并數列

問題描述 小明發現有很多方案可以把一個很大的正整數拆成若干個正整數的和。他采用了其中兩種方案&#xff0c;分別將它們列為兩個數組&#xff1a; {a?, a?, ..., a?}{b?, b?, ..., b?} 兩個數組的元素和相同。 定義一次合并操作為&#xff1a;將某個數組中相鄰的兩…

【行駛證識別】批量咕嘎OCR識別行駛證照片復印件圖片里的文字信息保存表格或改名字,基于QT和騰訊云api_ocr的實現方式

項目背景 在許多業務場景中,如物流管理、車輛租賃、保險理賠等,常常需要處理大量的行駛證照片復印件。手動錄入行駛證上的文字信息,像車主姓名、車輛型號、車牌號碼等,不僅效率低下,還容易出現人為錯誤。借助 OCR(光學字符識別)技術,能夠自動識別行駛證圖片中的文字信…

個人學習編程(3-29) leetcode刷題

最后一個單詞的長度&#xff1a; 思路&#xff1a;跳過末尾的空格&#xff0c;可以從后向前遍歷 然后再利用 while(i>0 && s[i] ! ) 可以得到字符串的長度&#xff0c; int lengthOfLastWord(char* s) {int length 0;int i strlen(s) - 1; //從字符串末尾開始//…

PAT甲級(Advanced Level) Practice 1028 List Sorting

原題 1028 List Sorting - PAT (Advanced Level) Practice 題目大意 輸入n個學生的id、姓名、分數&#xff0c;再輸入C表示對C列進行排序。 id&#xff1a;從小到大排 姓名&#xff1a;姓名不同時從小到大排&#xff0c;相同時id從小到大排 分數&#xff1a;不同時從小到…

UE4學習筆記 FPS游戲制作20 重寫機器人和玩家死亡 切換相機和模型

定義父類中的死亡方法 在父類中定義OnDie方法&#xff0c;不需要實現&#xff0c;由子類實現各自的死亡邏輯 新建一個Die方法&#xff0c;處理公共的死亡邏輯 Die的實現&#xff1a; 以前的分離控制現在要延遲做&#xff0c;如果分離了控制器&#xff0c;就無法再獲取到玩家的…

Linux信號的誕生與歸宿:內核如何管理信號的生成、阻塞和遞達?

個人主頁&#xff1a;敲上癮-CSDN博客 個人專欄&#xff1a;Linux學習、游戲、數據結構、c語言基礎、c學習、算法 目錄 一、認識信號 二、信號的產生 1.鍵盤輸入 2.系統調用 3.系統指令 4.硬件異常 5.軟件條件 三、信號的保存 1.block 2.pending 3.handler 四、信號…

DeepSeek API集成開發指南——Flask示例實踐

DeepSeek API集成開發指南——Flask示例實踐 序言&#xff1a;智能化開發新范式 DeepSeek API提供了覆蓋自然語言處理、代碼生成等多領域的先進AI能力。本文將以一個功能完備的Flask示例系統為載體&#xff0c;詳解API的集成方法與最佳實踐。通過本案例&#xff0c;開發者可快…

Linux環境下安裝部署Docker

windows下連接Linux&#xff1a; 打開終端&#xff1a; //ssh遠程連接 ssh root192.168.xx.xx//輸入賬號密碼 root192.168.xx.xxs password: ssh連接成功&#xff01; 安裝Docker&#xff1a; //安裝Docker yum install -y yum-utils device-mapper-persistent-data lvm2 …

開源CDN產品-GoEdge

一、背景 上篇文章分析了一下CDN的基本原理以及使用代碼實現了一個乞丐版的智能DNS調度器。從整個例子我們可以清晰了解到CDN原理&#xff0c;也就那么回事。 但是&#xff0c;之前也講過了&#xff0c;CDN產品融合的技術比較雜、也比較多。所以我就想著&#xff0c;萬物皆有開…

正則表達式-萬能表達式

1、正則 正則表達式是一組由字母和符號組成的特殊文本, 它可以用來從文本中找 出滿足你想要的格式的句子. {“basketId”: 0, “count”: 1, “prodId”: #prodId#, “shopId”: 1, “skuId”: #skuId#} #prodId# re相關的文章&#xff1a; https://www.cnblogs.com/Simple-S…

javaWeb Router

一、路由簡介 1、什么是路由&#xff1f; - 定義&#xff1a;路由就是根據不同的 URL 地址展示不同的內容或頁面。 - 通俗理解&#xff1a;路由就像是一個地圖&#xff0c;我們要去不同的地方&#xff0c;需要通過不同的路線進行導航。 2、路由的作用 - 單頁應用程序…

【前端】使用 HTML、CSS 和 JavaScript 創建一個數字時鐘和搜索功能的網頁

文章目錄 ?前言?一、項目結構?二、HTML 結構?三、CSS 樣式?四、JavaScript 功能?五、運行效果?總結 標題詳情作者JosieBook頭銜CSDN博客專家資格、阿里云社區專家博主、軟件設計工程師博客內容開源、框架、軟件工程、全棧&#xff08;,NET/Java/Python/C&#xff09;、數…

聚焦應用常用功能,提升用戶體驗與分發效率

隨著HarmonyOS應用的持續發展&#xff0c;應用的功能將越來越豐富&#xff0c;實際上80%的用戶使用時長都會集中在20%的特性上&#xff0c;其余的功能可能也僅僅是面向部分用戶。 用戶在下載應用時&#xff0c;如果應用包含大量的功能和資源&#xff0c;可能會導致下載時間過長…