h5 geolocation 的那些事~

在讲h5 的geolocation API之前,让我们先了解一下当前国内地理坐标系现状

当前国内地理坐标系

  1. 国际坐标系:国际标准,国际地图提供商使用的坐标系
  2. 火星坐标系:国内标准,国际坐标系通过GCJ-02算法(非线性)加密后得到的坐标系
  3. 百度坐标系:百度对火星坐标系进行二次加密得到的坐标系(隐约感觉到ie的身影)

<秦始皇都快要忍不住爬起来一统天下(坐标系)了>

让我们在同一个地点,看看三种坐标有什么地理位置的差别:

// 百度坐标系 火星坐标系
console.log(geolib.getDistance(
    {latitude:113.939446, longitude: 22.546171},
    {latitude: 113.932777, longitude: 22.540639}
), '百度坐标系 火星坐标系')


// 百度坐标系 国际坐标系
console.log(geolib.getDistance(
    {latitude:113.939446, longitude: 22.546171},
    {latitude: 113.9279875, longitude: 22.5436215}
), '百度坐标系 国际坐标系')

// 火星坐标系 国际坐标系
console.log(geolib.getDistance(
    {latitude: 113.932777, longitude: 22.540639},
    {latitude: 113.9279875, longitude: 22.5436215}
), '火星坐标系 国际坐标系')

//输出  (单位:m)
785 '百度坐标系 火星坐标系'
1283 '百度坐标系 国际坐标系'
551 '火星坐标系 国际坐标系'

可以看出同一地点,采用不同地理坐标系的偏差。因为采用的是非线性算法进行加密的,所以不同地区,偏差程度不一样,详细可自行进行查阅资料,或者自行进行测试。

那么从h5 的geolocation 获取的坐标系又是什么坐标系呢?w3c标准描述如下

The Geolocation API defines a high-level interface to location information associated only with the device hosting the implementation, such as latitude and longitude. The API itself is agnostic of the underlying location information sources. Common sources of location information include Glob al Positioning System (GPS) and location inferred from network signals such as IP address, RFID, WiFi and Bluetooth MAC addresses, and GSM/CDMA cell IDs, as well as user input. No guarantee is given that the API returns the device's actual location.

大致的意思是可以从 GPS、IP 地址、RFID、WiFi、蓝牙 MAC 地址、GSM/CDMA 卡 ID 等获取当前位置信息,具体获取的地理位置根据浏览器实现和设置有所不同。获取的坐标系为国际坐标系。

h5 获取的是国际坐标系不是不好吗?这个问题没有确定答案,主要取决于你开发的应用服务于国内,国外,还是国内外通用。举个栗子:

A同学开发一款移动应用,需要获取用户当前位置,根据当前位置去后端拉去用户周围的门店。简单,用h5 geolocatin 获取当前位置再去,后端拉去一下数据不就行行了。然而第二天就有用户用户投诉:我眼前就有1家门店,返回的门店却是1000m外的门店,难道有人山寨你们?A同学很是头痛,经过一番调查发现,国内坐标系还有多种,而h5 获取的坐标系和后端存储的门店坐标系不一致。

为了避免这种问题可以使用第三方地位服务,例如百度地图API的浏览器定位功能

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏携程技术中心

携程2015 Open House获奖项目:银行卡扫描识别

银行卡扫描识别 Ctrip Tech 背景介绍: 图像识别是人工智能的一个重要领域 。为了编制模拟人类图像识别活动的计算机程序,人们提出了不同的图像识别模型。图...

2205
来自专栏量子位

如何自制会跳舞的AI小姐姐?这有一份易上手的开源攻略

身材苗条,动作有力,姿势优美,视频片段里的小姐姐跳得行云流水,颇有C位出道的气势。

1003
来自专栏数据小魔方

堆叠柱图

今天你要跟大家分享的图表是——堆叠柱图! ▽▼▽ 首先还是来看堆叠柱图所用到的数据组织结构: ? 利用以上数据插入图表——柱形图(簇状)。 ? 然后为工资数据...

3368
来自专栏AI科技大本营的专栏

AI 技术讲座精选:利用深度学习分析医学图像

【AI100 导读】当下深度学习的研究领域仍然停留在通用图像的层面上,但我们的目标是将这些研究应用于医学图像,提升医疗保健行业的服务水平。在这篇文章中,作者会从...

2907
来自专栏张红林的专栏

大规模机器学习框架的四重境界

如何利用相对廉价的机器搭建分布式超大规模机器学习集群是一件非常复杂的事情,本文尝试梳理一下这方面的历史和现行的最佳实践。

1.4K2
来自专栏ATYUN订阅号

AI算法可以通过脑电图读数检测睡眠障碍模式

脑电图(EEG)使用放置在头皮上的电极测量大脑中的电活动。睡眠专家可利用它来诊断和评估神经系统疾病,这可能是一项繁琐的工作,需要在数小时记录的大脑活动中注释峰值...

883
来自专栏mwangblog

几种蚁群算法介绍

最早的蚁群算法,其在小规模TSP中性能尚可,再大规模TSP问题中性能下降,容易停滞。其解决旅行商问题(TSP)过程大致如下:

1043
来自专栏IT派

7月Python最佳开源项目Top 10

【导读】七月就要结束了,小编为大家整理了本月 Python 最受欢迎的十大开源项目。他山之石,可以攻玉,爱好Python的朋友们一起学习Github上的优秀项目...

723
来自专栏量子位

神经网络造“汉字”新技能全开,biangbiang面自愧不如

751
来自专栏AI研习社

深度学习下的医学图像分析(一)

AI 研习社按:本文由图普科技编译自《Medical Image Analysis with Deep Learning 》,雷锋网(公众号:雷锋网)独家首发。...

5225

扫码关注云+社区