• 沙里软件

  • ShaliSoft.com [手机站]   办公桌收纳抽屉
  • 首页
  • 博文
  • 演示
  • 管理
  • html5地理定位详解

    网络   2014/4/28 10:59:00

    为什么要采用html5地理定位?

    原因其实很简单,ip定位不准!

    一直以后总想找一个靠谱的ip库,但是事实上所有的ip库基本上到市一级就不行了,再往下面区县级的就基本不靠谱了,虽然有少量的ip库是可以到区县级的,但是这个数据量也是非常少的,所以html5定位实际上就是作为ip定位的替补出现的!

    html5的Geolocation API定位原理

    Geolocation API 是基于新增加的全局对象 navigator:navigator.geolocation。JavaScript 对象navigator 包含了很有用的有关访问者的浏览器和系统的信息。Geolocation 可以使用 IP 地址、基于 Web 的数据库、无线网络连接和三角测量或 GPS 技术来确定经度和纬度。一定要注意 Geolocation 所提供信息的精确性会由于获取信息的方式不同而有所差别。有时候,您可能无法精确地读取某些位置的地理信息,甚至完全无法读取。

    注意:html5的定位原理是什么?网上很少有文章解说html5工作原理,有些直接认为是商业版ip库,或者任务是wifi定位,这些说法都不是很准确,准确的说html5技术是综合了IP 地址、基于 Web 的数据库、无线网络连接和三角测量或 GPS 技术来确定经度和纬度。

    html5定位的精确度

    有很多方法可以定位用户的地理位置,并且每种方法都有不同的精度。桌面浏览器一般会使用WiFi(精确到20m)或者IP定位(只能精确到城市级别,并且有可能是假地址)。移动装置一般会使用GPS(精确到10m并且只能在外部使用),WiFi或GSM/CDMA网络信号定位(精确到1000m)

    一个有趣的测试

    同一位置同一电脑的在不同 的时间点测试的精确度是不一样的。

    测试地址:HTML5定位demo

    晚上7点—30M精确度

    晚上9点—63M精确度

    早上7点—20M精确度

    个人猜测这个定位和上网早高峰很有关,9点钟是上网高峰,信号降低,早上7点信号最强到达20M精确度

    不知道有没有比这更高的精确度了,希望有童鞋测试留言 告诉我!

    浏览器兼容性

    目前如下浏览器支持Geolocation API:

    • Firefox 3.5+

    • Chrome 5.0+

    • Safari 5.0+

    • Opera 10.60+

    • Internet Explorer 9.0+

    • Android 2.0+

    • iPhone 3.0+

    • Opera Mobile 10.1+

    • Symbian (S60 3rd & 5th generation)

    • Blackberry OS 6

    • Maemo

    • 需要注意的是:使用html5定位需要用户授权才可以使用!

      • 判断浏览器是否支持html5定位

      • 如何使用html5定位

    if (navigator.geolocation) {
    // do }

    返回false则不支持此api。

    navigator.geolocation对象使用

    navigator.geolocation 对象具有 3 个方法:

    • getCurrentPosition()

    • watchPosition()

    • clearWatch()

    getCurrentPosition 或 watchPosition

    getCurrentPosition() 方法的调用方式如下所示:

    void navigator.geolocation.getCurrentPosition(
              geolocationSuccess, geolocationError, geolocationOptions);
    watchPosition和getCurrentPosition() 调用方法一样!

    这两个方法都是立即返回的,使用的是异步回调的方式来使用api。它们有相同的参数:

    1. geolocationSuccess– 成功后的回调函数

    2. [geolocationError] – 失败后的回调函数

    3. [geolocationOptions] – 相关配置参数:

      • enableHighAccuracy – 确保应用会给出最佳结果。这有可能会让浏览器的反应时间变慢。如果是移动装置,还有可能因为使用GPS而消耗更多电量。接受参数类型为boolean,默认为false。

      • timeout – 接受一个数字作为参数,默认为0微秒。设置浏览器的超时时间。

      • maximumAge – 表示程序能接受的被缓存位置的最大过期时间。接受一个数字作为参数,默认为0微秒。这就意味这默认每次获取位置都必需重新获取一个新位置。

    两者之间的区别

    getCurrentPosition() 方法能够获取用户的当前位置,但是只能获取一次。

    watchPosition() 方法会定期查询用户的位置,观察用户位置是否发生了变化

    clearWatch

    这个方法接受一个参数,需要清理的观察进程的id:watchID(这个参数由watchPosition方法返回)。

    getCurrentPosition 和 watchPosition方法的主要区别是watchPosition方法会持续告诉你位置的改变,所以基本上它一直在更新用户的位置。当你在移动的时候,这个功能会非常有利于追踪用户的位置。这个函数还会返回一个watchID值被clearWatch使用来停止监控。

    clearWatch() 方法的调用方式如下所示:

    void navigator.geolocation.clearWatch(watchID)

    地理位置对象 Position

    Geolocation API 会返回一个地理位置对象 Position。这个对象具有两个属性:timestamp 和coords。timestamp 属性表示地理数据创建的时间。而 coords 属性包含了 7 个属性:

      • coords.latitude。 估算的纬度

      • coords.longitude。 估算的经度

      • coords.altitude。 估算的高度 (以米为单位的海拔值)

      • coords.accuracy。 所得经度和纬度的估算精度,以米为单位

      • coords.altitudeAccuracy。 所得高度的估算精度,以米为单位

      • coords.heading. 宿主设备的当前移动方向,以度为单位,相对于正北方向顺时针方向计算

      • coords.speed. 设备的当前对地速度,以米/秒为单位

    这里只有 3 个属性是必需的:coords.latitude、coords.longitude 和 coords.accuracy。其他属性返回null,取决于设备及其交互的后端定位服务器的功能。heading 和 speed 属性是基于用户的前一个位置计算的(如果有)。




    阅读(1359) 分享(0)

    上一篇: HTML5地理定位的应用例子
    下一篇: gps纠偏及大陆地图偏移原因

  • 精彩推荐

    ◆ 安装完office后 在组件服务里DCOM配置中找不到
    ◆ 微信清缓存工具,微信怎么清理缓存?
    ◆ 用回溯法解决子集和问题【C#版本】
    ◆ 实测什么物体会影响WIFI信号
    ◆ 利用UC微信分享接口进行WEB微信分享
    ◆ ASP.NET之GridView Eval() 中数据格式化或格式化数据
    ◆ css常用hack语法
    ◆ 面向对象的缺点,你了解了吗
    ◆ 我国首台可人脸识别ATM机发布 不刷脸不能取钱
    ◆ 2G网络要关闭了吗?你还不打算换4G手机?
  • 用心做事 不能唯利是图

    • 吊儿
    • 用QQ联系我17905772
  • 搜索


  • 最新文章

    • 导出Excel 格式 mso-number-format
    • 服务器iis支持tls1.2,windows server 2008 r2 中IIS启用TLS 1.2(安装SSL后用TLS 1.2)
    • MySQL配置优化
    • EditPlus 添加文件比较工具winmerge
    • 滚动悬浮固定JS特效

  • 热门文章

    • php sso单点登录实现代码
    • 中国菜刀(China chopper) 最新黑客工具
    • redis.conf中文版(基于2.4)
    • 搜索引擎名单大全
    • php图片上传类,支持加水印,生成略缩图

  • 最新图库


  • 最新评论


  • 友情链接

  • 沙里软件

  • 最近访客

    Powered by ShaliSoft.com 豫ICP备13008529号

    免责声明:本站部分内容来源于互联网,转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责,也不构成任何其他建议。如果发现侵犯版权,联系QQ17905772进行删除。