美文网首页
HTML5 地理位置

HTML5 地理位置

作者: destiny0904 | 来源:发表于2017-11-06 08:47 被阅读0次

一、简介

地理位置特性能够识别你所在的地理位置并且在你允许的情况下,把位置信息分享给别人。

识别地理位置的方法:

  • 通过 IP 地址

    • 只能用于电脑上的位置信息定位
  • 利用基站获取去收集网络的介入位置

    • 大致位置,不够精确
    • 精确到用户所属的城市街区,获取用户房源一公里的范围内
  • 通过卫星定位获得经纬度信息的 GPS 设备

    • 几米的误差内准确定位
    • 专用 GPS 芯片耗电快
    • GPS 芯片默认关闭,开启需要时间,有延迟

注意:浏览器必须要在用户允许的情况下才可以发送用户的位置信息给服务器。

二、地理位置 API

2.1 调用位置函数

function get_location() {
  navigator.geolocation.getCurrentPosition(show_map, handle_error, PositionOptions);
}

全局对象 navigatorgeolocation 属性的 getCurrentPosition() 方法,会触发浏览器弹出信息条,让用户确定是否分享地理位置。

  • show_map 是成功获取位置的回调函数,必须
  • handle_error 是获取地理位置失败的回调函数,可选
  • PositionOptions 是获取地理位置的设置对象,可选

2.2 show_map 获取地理位置

function show_map(position) {
  var latitude = position.coords.latitude;//获取纬度
  var longitude = position.coords.longitude;//获取经度
}

这个回调函数要传入一个 position 对象,就是获取到的位置信息。

position 对象的属性:

  • coords.latitude 纬度,度
  • coords.longtitude 经度,度
  • coords.altitude 海拔,米
  • coords.accuracy 精确度,米
  • coords.altitudeAccuracy 海拔精确度,米
  • coords.heading 方向,度,顺时针,以正北为基准
  • coords.speed 速度,米/秒
  • timestamp 时间戳,类似 Date() 对象

只有前三个属性确保不为空,其余属性因用户的设备和后台定位服务器的不同,可能属性值为 null,其中 headingspeed 是基于用户前一次位置信息计算所得的。

2.3 handle_error 容错处理

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

这个容错处理的回调函数会传入一个 PositionError 对象作为参数,上面例子中是 err

PositionError 对象:

  • code 错误类型,属性值为:
    • err.PERMISSION_DENIED 或者 1:用户点击了信息条的“不共享”按钮或者直接拒绝被获取位置信息。
    • err.POSITION_UNAVAILABLE 或者 2:网络不可用或者无法连接到获取位置信息的卫星。
    • err.TIMEOUT 或者 3:网络可用但是花了太长的时间去计算。
    • err.UNKNOWN_ERROR 或者 0:发生其他未知错误。
  • message 错误信息,与终端用户无关

2.4 PositionOptions 对象设置

navigator.geolocation.getCurrentPosition(show_map, handle_error, {enableHighAccuracy: true,timeoout: 175000, maximumAge: 75000})

属性:

  • enableHighAccuracy 开启高精度定位,默认 false
  • timeout 获取用户位置信息的最长等待时间,指网络请求时间,毫秒
  • maximumAge 允许用户将一定时间内缓存的位置信息快速返回给 Web 应用,默认 0,毫秒

2.5 watchPosition() 持续获取

watchPosition() 方法与 getCurrentPosition() 方法结构相同

你不用主动获取用户位置信息,每次用户位置改变,这些回调函数就会调用。设备会确定一个最佳的时间间隔,定时检测用户位置的改变。

watchPosition() 方法会返回一个数字,将它保存下来,当你想停止监测用户位置时就可以调用 clearWatch() 方法,传入保存的数字作为参数。

var watch = navigator.geolocation.watchPosition(show_map, handle_error, {enableHighAccuracy: true,timeoout: 175000, maximumAge: 75000})

clearWatch(watch);

2.6 geo.js 兼容性 javascript 库

geo.js 封装了 W3C 标准、Gears 以及移动平台所提供的各种不同类型的地理位置 API,提供统一的调用接口。

准备:

<script src="gears_init.js"></script><!--用于初始化 Gears-->
<script src="geo.js"></script>

使用:

if (geo_position_js.init()) {
  geo_position_js.getCurrentPosition(success, error)
}

geo.js 目前不支持 watchPosition() 方法,只能通过定时调用实现。

三、地图的调用

3.1 Google 地图 API

3.2 Tencent 地图 API

3.3 百度地图 API

3.4 高德地图 API

相关文章

  • 定位当前地理位置

    使用 HTML5 Geolocation API 来构建基于地理位置的应用~ 各种浏览器对HTML5 Geoloc...

  • HTML5简明教程(七)其他新技术

    最后一部分介绍HTML5其他新技术。 1. 地理位置 HTML5地理定位功能由navigator.geolocat...

  • HTML5 中的几个 API

    Part 1:Geolocation Geolocation 简述 HTML5 中的地理位置,是由底层硬件设备提供...

  • HTML5 地理位置

    一、简介 地理位置特性能够识别你所在的地理位置并且在你允许的情况下,把位置信息分享给别人。 识别地理位置的方法: ...

  • HTML5实现获取地理位置信息并定位

    这篇文章主要介绍了HTML5实现[获取地理位置]信息并定位功能,本文讲解了原生HTML5、百度地图、谷歌地图等三种...

  • HTML5 Geolocation地理位置

    简介 基于位置的信息服务在我们的生活中是特别常见的需求,比如地图导航,外卖快递,家政服务以及气象信息等等,这些服务...

  • HTML-Geolocation

    HTML5中,Geolocation用于获取地理位置,这里是Geolocation的基本使用方法: 添加处理定位失...

  • HTML5 地理定位笔记

    一:定位用户的位置 HTML5 Geolocation API 用于获得用户的地理位置。 鉴于该特性可能侵犯用户的...

  • Geolocation(地理定位)

    HTML5 Geolocation API 用于获得用户的地理位置。鉴于该特性可能侵犯用户的隐私,除非用户同意,否...

  • html5地理定位原理及其应用(转)

    介绍 地理位置(Geolocation)是HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开...

网友评论

      本文标题:HTML5 地理位置

      本文链接:https://www.haomeiwen.com/subject/ybpkmxtx.html