打开天气软件展示深圳天气、点外卖定位当前是大族科技大厦,这些习以为常的服务背后是怎么样的流程?
本文从地理知识开始到应用场景结束为您解答这些位置服务背后的大致框架,涵盖地图、定位方法、国家城市代码和多样应用场景。没有代码全文约3分钟,请放心阅读。
本文一共6个章节,第2、3章节讲定位技术;第4、5章节讲应用技术。
1、仅需了解定位技术,建议看第3章“定位方法”即可。
2、产品同学了解定位应用,建议看3、5章节即可。
3、技术同学,建议全看。
定位&应用流程大体相同,一般分为“信息采集”、“地图信息换取”、“配套服务”,下图以天气为例描述大致流程。
基站 | 公用移动通信基站是无线电台站的一种形式,是指在一定的无线电覆盖区中,通过移动通信交换中心,与移动电话终端之间进行信息传递的无线电收发信电台。 |
---|---|
POI | POI是“Point of Interest”的缩写,中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。 |
LBS | 基于位置的服务(location based services) |
经纬度是经度与纬度的合称组成一个坐标系统。又称为地理坐标系统,它是一种利用三度空间的球面来定义地球上的空间的球面坐标系统,能够标示地球上的任何一个位置(小数点后7位,精度可以到1厘米)。
当使用GPS定位时,我国出于安全考虑,没有采用国际通用的WGS84地球坐标系,而是在标准坐标系上加了一些偏移,这样的加密坐标系就被称为“火星坐标系”。
地图公司发布地图数据的时候,地图数据已经加密了。导航软件公司、网络地图公司为了将GPS获得的真实坐标信息与地图匹配,必须在软件或服务器上加入国家保密插件,国家保密插件的作用就是输入真实坐标输出加密坐标。
优点:国家安全
缺点:多了坐标系转化,使用时要留意经纬度和坐标系的关系。一般终端设备从GPS采集的经纬度是地球坐标。使用地图API的时候,一般要注明使用的坐标系为地球坐标。
1、GPS
利用卫星定位,精确度10米左右。不需要sim卡,不需要连接网络。定位成功可以获得用户的经纬度。缺点是首次使用耗时久,需要用户单独打开GPS模块功能。
2、基站定位
利用运营商信号基站的位置,以及多基站与用户信号强弱推算出用户的大概位置。实际精度1000米左右,手机要处于sim卡注册状态,需要收到3个以上基站信号,还需要依赖基站位置数据包。
3、WIFI(mac地址)定位
类似基站定位,通过路由的mac地址对应的地理位置信息库,以及连接信号推算出位置信息。使用时需要开启wifi(无论是否有用),手机也需要可以上网。这种方式定位精度高,速度快。
特别注意:IOS设备目前只能取到一个mac地址,仅采用wifi定位时,ios设备可能出现定位精度不高,一般是建议打开GPS。
4、IP定位
通过设备的IP地址来确定地理位置信息,精准度依赖于IP库的维护,只能用于城市级别且定位精准度低,一般作为打底的定位方式。IP方面联通、电信IP是开卡地,移动是漫游地IP,更加影响了IP库查询的可靠性。
设备 | 采集方法以及权限 |
---|---|
安卓系统 | 安卓权限系统分为普通权限和危险权限,定位属于危险权限,需要用户授权。 ACCESS_COARSE_LOCATION:模糊定位权限:一般用于网络定位。 ACCESS_FINE_LOCATION:精确定位权限:一般用于GPS定位。 |
IOS系统 | 待补充 |
网页 | 待补充 |
安卓QQ浏览器授权弹框示意图:
国家/城市/地区都用通用数字或英文代码表示,定位服务也会返回此类代码供业务使用,便于定位结果的流通和使用场景扩散。
国内城市一般使用国家每年发布的行政区划代码。全球就没有通用的城市编码,一般直接用名称表示。国家级别有通用的代码(国际标准化组织的ISO 3166-1)。
中华人民共和国县及县以上行政区划代码,由中华人民共和国民政部公布,最新版本为2018年10月(持续更新)。传送门:http://www.mca.gov.cn/article/sj/xzqh/2018/
六位码的规则含义是(资料参考维基百科):
1、第一、二位表示省级行政单位(省、自治区、直辖市、特别行政区),其中第一位代表大区。
2、第三、四位表示地级行政单位(地级市、地区、自治州、盟及省级单位直属县级单位的汇总码)。
对于省(自治区)下属单位:01-20,51-70表示省辖市(地级市);21-50表示地区(自治州、盟);90表示省(自治区)直辖县级行政区划的汇总。
对于直辖市下属单位:01表示市辖区的汇总;02表示县的汇总。
3、第五、六位表示县级行政单位(县、自治县、市辖区、县级市、旗、自治旗、林区、特区)。
对于地级市下属单位:01-20表示市辖区(特区);21-80表示县(旗、自治县、自治旗、林区);81-99表示地级市代管的县级市。
对于直辖市所辖县级行政单位:01-20、51-80代表市辖区;21-50代表县(自治县)。
对于地区(自治州、盟)下属单位:01-20表示县级市;21-80表示县(旗、自治县、自治旗)。对于省级直辖县级行政单位:同地区。
国家代码(或国家编码)是一组用来代表国家和境外领土的地理代码。国家代码是由字母或数字组成的短字串,方便用于数据处理和通讯。世界上有许多不同的国家代码标准,其中最广为人知是为国际标准化组织的ISO 3166-1,包含三种格式。
1、二位字母代码(ISO 3166-1 alpha-2)
2、三位字母代码(ISO 3166-1 alpha-3)
3、三位数字代码(ISO 3166-1 numeric)
国家名称 | 二位字母代码 | 三位字母代码 | 三位数字代码 |
---|---|---|---|
中国 | CN | CHN | 156 |
肯尼亚 | KE | KEN | 404 |
在权限、功耗、时耗的背景下,采用合理的定位方式取到够用的精准度即可。这里主要区分两种精度:
低精度:到城市(市县级别),用于天气、城市服务等。WIFI、基站、IP定位即可。
高精度:到街道,用于导航、查路线、附近商店大楼等。GPS、WIFI最佳。
天气的流程可以参考1.3小节的示意图。
1、为什么我的天气软件展示的是另外一个城市的天气?
一般是定位不准确,优先检查设备是否允许了定位权限,如果已经开了权限还不准,说明采集的数据不够,可以打开GPS或wifi以提供设备更多的信息用于定位。
2、不登录wifi也可以定位吗?
可以。
3、海外也可以定位城市吗?
一般地图服务商都提供了海外定位的能力,腾讯地图提供了海外城市定位。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。