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.mzph.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;可能会导致下载时间过长…