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


本文摘自PHP中文网,作者黄舟,侵删。

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

一般还是很少用到的

Geolocation-API

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

核心的方法就是getCurrentPostion和watchPosition

getCurrentPosition

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

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

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

  • options 配置信息参数对象

1

2

navigator.geolocation.getCurrentPosition(function(pos){

  console.log(pos);//获取位置信息对象Geoposition});

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

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

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

  • coord 坐标

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

    • altitude 海拔

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

    • heading 方向

    • latitude 纬度

    • longitude 经度

    • speed 速度

  • timestamp 时间戳

  • 1

    <br>

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


navigator.geolocation.getCurrentPosition(function(pos){
  console.log(pos);
},function(err){
  console.log(err);
});

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

1

2

3

4

navigator.geolocation.getCurrentPosition(function(pos){

  console.log(pos);

},function(err){

  console.log(err); //获取错误对象PositionError});

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

  • code = 1 表示用户拒绝

  • code = 2 表示无法获取

  • code = 3 表示连接超时


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

1

2

3

4

5

6

7

8

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:无条件获取新的地理位置信息

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

watchPosition

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

阅读剩余部分

相关阅读 >>

HTML5幻灯片系统:h5slides

HTML5 虚拟键盘出现挡住输入框怎么办

HTML5 canvas

canvas原生实现前端网页移动端签名

HTML5之pushstate和popstate操作history无刷新改变当前url的详细介绍

HTML5单页面手势滑屏切换原理分析

HTML5利用canvas绘制哆啦a梦头部(代码实例)

HTML5的video标签操作视频详解

css3如何实现元素环绕中心点布局(代码示例)

HTML5+css3实现无插件拖拽上传图片(支持预览与批量)的详情介绍

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...