HTML5 Geolocation

news2024/10/6 12:24:27

文章目录

  • HTML5 Geolocation
    • 定位用户的位置
    • 浏览器支持
    • HTML5 - 使用地理定位
    • 处理错误和拒绝
    • 在地图中显示结果
    • 给定位置的信息
    • getCurrentPosition() 方法 - 返回数据
    • Geolocation 对象 - 其他有趣的方法

HTML5 Geolocation

在这里插入图片描述

HTML5 Geolocation(地理定位)用于定位用户的位置。

定位用户的位置

HTML5 Geolocation API 用于获得用户的地理位置。

鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的。

浏览器支持

Internet Explorer 9+, Firefox, Chrome, Safari 和 Opera 支持Geolocation(地理定位)。

注意:Geolocation(地理定位)对于拥有 GPS 的设备,比如 iPhone,地理定位更加精确。

HTML5 - 使用地理定位

请使用 getCurrentPosition() 方法来获得用户的位置。

下例是一个简单的地理定位实例,可返回用户位置的经度和纬度:

实例

var x=document.getElementById("demo"); 
function getLocation() 
{ 
    if (navigator.geolocation) 
    { 
        navigator.geolocation.getCurrentPosition(showPosition); 
    } 
    else 
    { 
        x.innerHTML="该浏览器不支持获取地理位置。"; 
    } 
} 
 
function showPosition(position) 
{ 
    x.innerHTML="纬度: " + position.coords.latitude + 
    "<br>经度: " + position.coords.longitude;     
}

实例解析:

  • 检测是否支持地理定位。
  • 如果支持,则运行 getCurrentPosition() 方法。如果不支持,则向用户显示一段消息。
  • 如果getCurrentPosition()运行成功,则向参数showPosition中规定的函数返回一个coordinates对象。
  • showPosition() 函数获得并显示经度和纬度。

上面的例子是一个非常基础的地理定位脚本,不含错误处理。

处理错误和拒绝

getCurrentPosition() 方法的第二个参数用于处理错误。它规定当获取用户位置失败时运行的函数:

实例

function showError(error) 
{ 
    switch(error.code) 
    { 
        case error.PERMISSION_DENIED: 
            x.innerHTML="用户拒绝对获取地理位置的请求。" 
            break; 
        case error.POSITION_UNAVAILABLE: 
            x.innerHTML="位置信息是不可用的。" 
            break; 
        case error.TIMEOUT: 
            x.innerHTML="请求用户地理位置超时。" 
            break; 
        case error.UNKNOWN_ERROR: 
            x.innerHTML="未知错误。" 
            break; 
    } 
}

错误代码:

  • Permission denied - 用户不允许地理定位
  • Position unavailable - 无法获取当前位置
  • Timeout - 操作超时

在地图中显示结果

如需在地图中显示结果,您需要访问可使用经纬度的地图服务,比如谷歌地图或百度地图:

实例

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+"'>"; 
}

在上例中,我们使用返回的经纬度数据在谷歌地图中显示位置(使用静态图像)。

上面的链接向您演示如何使用脚本来显示带有标记、缩放和拖曳选项的交互式地图。

给定位置的信息

本页演示的是如何在地图上显示用户的位置。不过,地理定位对于给定位置的信息同样很有用处。

实例:

  • 更新本地信息
  • 显示用户周围的兴趣点
  • 交互式车载导航系统 (GPS)

getCurrentPosition() 方法 - 返回数据

T若成功,则 getCurrentPosition() 方法返回对象。始终会返回 latitude、longitude 以及 accuracy 属性。如果可用,则会返回其他下面的属性。

属性描述
coords.latitude十进制数的纬度
coords.longitude十进制数的经度
coords.accuracy位置精度
coords.altitude海拔,海平面以上以米计
coords.altitudeAccuracy位置的海拔精度
coords.heading方向,从正北开始以度计
coords.speed速度,以米/每秒计
timestamp响应的日期/时间

Geolocation 对象 - 其他有趣的方法

watchPosition() - 返回用户的当前位置,并继续返回用户移动时的更新位置(就像汽车上的 GPS)。

clearWatch() - 停止 watchPosition() 方法。

下面的例子展示 watchPosition() 方法。您需要一台精确的 GPS 设备来测试该例(比如 iPhone):

实例

var x=document.getElementById("demo"); 
function getLocation() 
{ 
    if (navigator.geolocation) 
    { 
        navigator.geolocation.watchPosition(showPosition); 
    } 
    else 
    { 
        x.innerHTML="该浏览器不支持获取地理位置。"; 
    } 
} 
function showPosition(position) 
{ 
    x.innerHTML="纬度: " + position.coords.latitude + 
    "<br>经度: " + position.coords.longitude; 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SQL Server】数据库开发指南(五)T-SQL 高级查询综合应用与实战

T-SQL 是 SQL Server 的专用版本&#xff0c;提供了一组强大的高级查询功能&#xff0c;包括聚合函数、子查询、连接、视图、窗口函数、共享表达式、递归查询等。这些功能使得 T-SQL 可以轻松处理大量数据&#xff0c;并支持各种复杂的查询和数据操作。本文将介绍 T-SQL 的一些…

Debian 10配置apt源常见问题

目录 一&#xff1a;配置本地apt源没有发现文件 解决方案 二&#xff1a;apt下载bind9报错E: Package bind9 has no installation candidate 方法一&#xff1a; 方法二&#xff1a;更新不报错但是安装依旧报错E: Package bind9 has no installation candidate 一&#xff…

密码加密——加盐算法(两种方式)

加盐算法 文章目录加盐算法手写一个加盐算法spring security密码安全是一件很重要的事情&#xff0c;所以一定要谨慎对待 常见的主要是3种方式 明文MD5加密加盐算法 首先明文肯定是不可取的&#xff0c;在数据库中明文存储密码风险实在是太大了 简单来说&#xff0c;使用MD…

DataGrip连接数据库设置(MySQL、Oracle、SQL Server)

一、DataGrip连接MySQL 1.1 配置信息 1.2 测试查询employees库中departments表信息 employees为测试库&#xff0c;具体来源&#xff0c;参考这篇文章 下载并导入MySQL示例数据库employees 。 1.3 测试查询employees库中employees表信息 二、DataGrip连接Oracle 将SID改为o…

「字节跳动实习期间」免费专栏发布+服务端知识架构

字节跳动实习期间专栏内容 主要放在字节跳动实习期间个人的一些笔记&#xff0c;通过整理放出&#xff0c;并保持不断迭代 同时这里并不会放涉及字节内部的文档和知识&#xff0c;只是博主整理的网上已有的知识 欢迎同学们关注专栏、互相学习、共同进步&#xff0c;我也会在…

vue-cli(vue脚手架方式搭建)

1.首先安装node前端环境,可以帮助我们去下载其他的组件 下载完成后,去自己的电脑找到node的文件路径,复制去配置环境变量,在path中配 环境搭配完成后,在cmd中进行测试 ,输入一下两个命令进行测试 2.在hbuilderX中创建一个vue-cli项目(标准的前段项目) 3.组件路由 (1)安装 v…

java基础学习-5

Java基础学习-5快乐算法二分查找小总结分块查找冒泡选择插入排序递归算法快速排序小总结ArraysLambda表达式小总结Lambda表达式的省略写法小练习集合进阶CollectionColection的遍历方式迭代器遍历小总结增强for循环Lambda表达式遍历小总结List集合List的遍历方式迭代器遍历增强…

【redis】集群

redis集群 集群有点难 大部分的实操命令没有记录 希望能二刷补上 18:46 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录redis集群前言一、集群是什么&#xff1f;二、集群能干嘛&#xff1f;三、集群算法-分片-槽…

redis——分布式

持久化RDBAOF主从同步全量同步增量同步哨兵sentinel作用服务状态监控选举master分片集群作用散列插槽 hash slot集群伸缩故障转移多级缓存持久化 RDB redis备份文件&#xff08;快照&#xff09; 可压缩&#xff0c;耗费cpu默认在服务停止时触发可以设置一定条件&#xff0c…

《C Primer Plus》第16章复习题与编程练习

《C Primer Plus》第16章复习题与编程练习复习题1. 下面的几组代码由一个或多个宏组成&#xff0c;其后是使用宏的源代码。在每种情况下代码的结果是什么&#xff1f;这些代码是否是有效代码&#xff1f;&#xff08;假设其中的变量已声明&#xff09;2. 修改复习题1中d部分的定…

Linux的chage命令

Linux系统中有安全验证机制&#xff0c;有一个密码过期管理功能&#xff0c;当该账户密码过期了&#xff0c;那么用户在登录系统的时候就会提示我们更改密码。当密码过期后&#xff0c;并不代表这个用户不用密码就能登录了&#xff0c;而是使用旧密码登录&#xff0c;然后跳转到…

靶机精讲之PWOOS1.0

主机发现 nmap扫描 端口发现扫描 UDP扫描 服务扫描 脚本扫描 查看链接 暴露的信息 mgmt manegement管理系统 web渗透 80端口 观察文件路径的变化 sql注入 手动注入 加‘有报错 查看有无文件包含 无 /etc/passwd(查看文件包含&#xff09; 有 10000端口 把有文件包含路径在…

C++程序设计——右值引用

一、右值引用概念 引用&#xff1a; C98中提出了引用的概念&#xff0c;引用即别名&#xff0c;引用变量与其引用实体共用同一块内存空间&#xff0c;而引用的底层是通过指针来实现&#xff0c;因此使用引用&#xff0c;可以提高程序的可读性。 右值引用(类型&& 右值…

校园商城项目自制面经

ware-仓库 目录 ES 为什么redis快 为什么ES搜索快&#xff1f; 怎么理解es的倒排索引 简单看SpringCache的api Feign怎么用的 gateWay实现前端和后端的跨域请求&#xff1a; 三级分类&#xff1a; 网站的数据上传&#xff1a; JSR303校验 自定义校验功能 ES&#xf…

空间复杂度

概念 空间复杂度&#xff1a;是对一个算法在运行过程中临时占用存储空间大小的量度。 空间复杂度和时间复杂度的表示方法是一样的&#xff0c;也使用大O渐进表示法&#xff0c;计算规则基本相似。空间复杂度计算的并不是程序占用的字节大小&#xff0c;而是变量的个数。 大O…

chatgpt+机器人控制器融合(一)

当今机器人技术面临的挑战&#xff0c;以及 ChatGPT 能提供的帮助 目前机器人的操作流是从工程师或技术用户开始&#xff0c;需要他们将任务需求转换为系统代码。工程师会处于工作流程的回路中&#xff0c;他们需要不断编写新的代码和规范来纠正机器人的行为。总得来说&#x…

Faster-RCNN代码解读4:辅助文件解读

Faster-RCNN代码解读4&#xff1a;辅助文件解读 前言 ​ 因为最近打算尝试一下Faster-RCNN的复现&#xff0c;不要多想&#xff0c;我还没有厉害到可以一个人复现所有代码。所以&#xff0c;是参考别人的代码&#xff0c;进行自己的解读。 ​ 代码来自于B站的UP主&#xff08;…

我的创作纪念日:Unity CEO表示生成式AI将是Unity近期发展重点,发布神秘影片预告

PICK 未来的AI技术将会让人类迎来下一个生产力变革&#xff0c;这其中也包括生成型AI的突破性革新。各大公司也正在竞相推出AIGC工具&#xff0c;其中微软的Copilot、Adobe的Firefly、Github的chatGPT等引起了人们的关注。然而&#xff0c;游戏开发领域似乎还没有一款真正针对性…

vector容器

1、vector简介 vector 和 arry 非常相似&#xff0c;唯一存在的不同是 vector 是动态分配内存空间&#xff0c;随着元素的增加空间自动增加&#xff0c;但是 arry 是静态的 wector&#xff1a;单端动态数组容器&#xff0c;只允许在一端进行操作 2、vector的使用 需要引进头…

PyTorch深度学习实战 | 基于多层感知机模型和随机森林模型的某地房价预测

简介&#xff1a; 在现实生活中&#xff0c;除了分类问题外&#xff0c;也存在很多需要预测出具体值的回归问题&#xff0c;例如年龄预测、房价预测、股价预测等。相比分类问题而言&#xff0c;回归问题输出类型为一个连续值&#xff0c;如下表所示为两者的区别。在本文中&…