目录
Geolocation-API
getCurrentPosition
watchPosition
Haversine算法
首页 web前端 H5教程 HTML5地理位置定位Geolocation-API及Haversine地理空间距离算法(图文)

HTML5地理位置定位Geolocation-API及Haversine地理空间距离算法(图文)

Mar 11, 2017 pm 04:13 PM

   HTML5提供了Geolocation-API允许我们获取地理位置坐标
不过只有针对特定的需求才会用到
比如说地图应用

一般还是很少用到的

Geolocation-API

使用的方法也很简单
API都存在于navigator.geolocation对象的原型上

核心的方法就是getCurrentPostion和watchPosition

getCurrentPosition

navigator.geolocation.getCurrentPosition方法有三个参数

  • success 获取位置信息成功的回调函数(必须)

  • error 获取位置信息失败的回调函数

  • options 配置信息参数对象

navigator.geolocation.getCurrentPosition(function(pos){
  console.log(pos);//获取位置信息对象Geoposition});
登录后复制

这时浏览器就会发起询问 <br/>因为毕竟位置信息也算是隐私信息

这里我们点击允许共享位置信息就可以了 <br/>然后Chrome就会向Google位置服务发送本地网络信息 <br/>(由于国内封杀了谷歌,所以我们只有翻墙才能获取到位置信息〒▽〒)

可以在控制台内给我们返回的位置信息

  • coord 坐标 <br/>

    • accuracy 定位精准度(单位m)

    • altitude 海拔

    • altitudeAccuracy 海拔精准度(单位m)

    • heading 方向

    • latitude 纬度

    • longitude 经度

    • speed 速度

  • timestamp 时间戳

  • <br/>
    登录后复制

不过这个坐标并不是十分精确(特别是PC端) <br/>它可能源于IP地址、GPS、Wifi定位等等


navigator.geolocation.getCurrentPosition(function(pos){
  console.log(pos);
},function(err){
  console.log(err);
});
登录后复制

我们可以设置第二个参数当获取地理位置信息错误时做出一些处理

navigator.geolocation.getCurrentPosition(function(pos){
  console.log(pos);
},function(err){
  console.log(err); //获取错误对象PositionError});
登录后复制

比如我现在拒绝共享位置信息

  • code = 1 表示用户拒绝

  • code = 2 表示无法获取

  • code = 3 表示连接超时


第三个参数用于设置配置信息

navigator.geolocation.getCurrentPosition(function(pos){
  console.log(pos);
},function(err){
  console.log(err);
},{
  enableHighAccuracy: true,
  timeout: 5000,
  maximumAge: 3000});
登录后复制
  • enableHighAccuracy 是否需要高精度位置 默认false

  • timeout 设置请求超时时间(单位ms) 默认infinity不限时

  • maximumAge 位置信息过期时间(单位ms) 默认0:无条件获取新的地理位置信息 <br/>

    • 在重复获取地理位置watchPosition时,该参数指定多久再次获取位置

watchPosition

watchPosition与getCurrentPosition参数都是一样的 <br/>区别在于watchPosition是不停的获取位置信息 <br/>比如我们使用的定位软件 <br/>我们在跑步时位置不断变更,就需要不断的重绘定位 <br/>这样每当坐标发生变化,就会调用success回调函数

而且watchPosiiton会返回一个watchID <br/>我们可以通过clearWatch(warchID)取消监听 <br/>类似于取消定时器

var ID = navigator.geolocation.watchPosition(function(pos){  ...},function(err){  ...},{  ...});
navigator.geolocation.clearWatch(ID);
登录后复制

如果clearWatch不带参数 <br/>则清除所有watchPosition

Haversine算法

我们有些时候 <br/>可能需要获取两点的距离 <br/>比如说订餐APP的获取附近商家 <br/>这时我们就可以利用Haversine算法来计算

function toRadians(degree) {
  return degree * Math.PI / 180;
}function haversine(latitude1, longitude1, latitude2, longitude2) {
  var R = 6371;  var deltaLatitude = toRadians(latitude2-latitude1);  
  var deltaLongitude = toRadians(longitude2-longitude1);
  latitude1 = toRadians(latitude1);
  latitude2 = toRadians(latitude2);  
  var a = Math.sin(deltaLatitude/2) * Math.sin(deltaLatitude/2) +    
  Math.cos(latitude1) * Math.cos(latitude2) *    
  Math.sin(deltaLongitude/2) * Math.sin(deltaLongitude/2);  
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));  
  var d = R * c;  return d;
}
登录后复制

传入两点的坐标就可以得到地理空间距离
其中var R = 6371;是地球半径6371km
当然了也存在一些其他算法
在时间和精确度上有所不同

以上是HTML5地理位置定位Geolocation-API及Haversine地理空间距离算法(图文)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

HTML 中的表格边框 HTML 中的表格边框 Sep 04, 2024 pm 04:49 PM

HTML 表格边框指南。在这里,我们以 HTML 中的表格边框为例,讨论定义表格边框的多种方法。

HTML 中的嵌套表 HTML 中的嵌套表 Sep 04, 2024 pm 04:49 PM

这是 HTML 中嵌套表的指南。这里我们讨论如何在表中创建表以及相应的示例。

HTML 左边距 HTML 左边距 Sep 04, 2024 pm 04:48 PM

HTML 左边距指南。在这里,我们讨论 HTML margin-left 的简要概述及其示例及其代码实现。

HTML 表格布局 HTML 表格布局 Sep 04, 2024 pm 04:54 PM

HTML 表格布局指南。在这里,我们详细讨论 HTML 表格布局的值以及示例和输出。

HTML 输入占位符 HTML 输入占位符 Sep 04, 2024 pm 04:54 PM

HTML 输入占位符指南。在这里,我们讨论 HTML 输入占位符的示例以及代码和输出。

HTML 有序列表 HTML 有序列表 Sep 04, 2024 pm 04:43 PM

HTML 有序列表指南。在这里我们还分别讨论了 HTML 有序列表和类型的介绍以及它们的示例

在 HTML 中移动文本 在 HTML 中移动文本 Sep 04, 2024 pm 04:45 PM

HTML 中的文本移动指南。在这里我们讨论一下marquee标签如何使用语法和实现示例。

HTML onclick 按钮 HTML onclick 按钮 Sep 04, 2024 pm 04:49 PM

HTML onclick 按钮指南。这里我们分别讨论它们的介绍、工作原理、示例以及各个事件中的onclick事件。

See all articles