iOS 坐标系、地图、定位

  iOS系统上通过定位服务CLLocation相关接口获取定位信息时,获取的经纬度坐标系是WGS84地球坐标,如果直接将该坐标系在iOS系统地图中打点,会发现存在偏移,因为iOS系统地图查看国内时使用的是高德地图数据,因此只接受GCJ02火星坐标。

  注1:百度地图使用百度坐标,支持从地球坐标和火星坐标导入成百度坐标,但无法导出。并且批量坐标转换一次只能转换20个(待验证)。

  注2:搜狗地图支持直接显示地球坐标,支持地球坐标、火星坐标、百度坐标导入成搜狗坐标,同样,搜狗坐标也无法导出。

  个人认为:采用自家坐标体系,而不采用国内通用的火星坐标体系,实在是自寻短处。当然,百度是因为做的足够大、足够好,所以很霸道,也为以后一统天下而不让别人瓜分之而做准备吧。搜狗虽然用自家坐标体系,但能将地球坐标直接导入,此举也属唯一。而图吧地图不知道学什么加密方式,以前用地球坐标用的好好的,现在用图吧自己的坐标,难道是因为给百度做过所以也来了这么一招?或者沿用百度?不得而知。

  定位即获取用户当前经纬度,iOS平台都是通过系统SDK接口获取的,因此所有App获取定位及精度的能力是相同的,即使Google Maps、百度地图、高德地图这种专业地图App也是如此。

  为什么两台一样的手机,获取的当前位置不一样?我明明在这个位置,为什么定位却显示在附件另一个位置,相差那么远?

  GPS:根据系统GPS模块获取经纬度,精度10-100米左右,限制是容易受环境影响,在室内几乎不起作用。

  基站:根据运营商基站位置计算经纬度,精度1000-3000米左右,限制是定位较慢,精度差。

  WIFI:根据周围WIFI路由器位置计算经纬度,精度100-200米左右,限制是受周围WIFI数量和分布影响,需要打开手机WIFI开关。

  App地图同样存在坐标系和精度问题。前面说过在地图里显示坐标点时,需要匹配正确的坐标系,否则就会产生偏移。

  iOS平台的系统地图就存在数据源地图坐标系导致的一个大坑,iOS系统地图App以及系统地图组件MKMapView的数据源分为两种:高德数据源和TomTom数据源。最坑的是iOS地图使用的数据源和当前手机所处的位置是相关的:

  如果手机在大陆地区,iOS地图使用的是高德地图数据源:此时用户查看大陆和港澳台地图细节信息时,使用的是GCJ02火星坐标系,同时地图显示精度很高,但是看海外地图时,由于数据源问题精度就会很差(坐标系是WGS84)。

  如果手机在港澳台和海外地区,iOS地图使用的是TomTom地图数据源,该地图匹配的是WGS84地球坐标系,如果用户在海外查看国内地图,同时你的POI打点坐标系是GCJ02火星坐标系,那么就会产生偏差;另外手机在港澳台和海外地区时查看港澳台和海外的地图数据精度很好,然而查看国内地图便会精度偏低。

  因此要想在iOS地图中正确打点,就需要先行判断使用的地图数据源,以及对应的坐标系,同时使用的POI坐标系务必与地图坐标系匹配,否则就会出现偏差。

  开发App时会遇到各种坑,本文分享我们在iOS/Android系统中定位和地图中遇到的坑,以及携程App的解决方案...

  一、各个坐标系的概况 众所周知地球是一个不规则椭圆体,GIS中的坐标系定义由基准面和地图投影两组参数确定,而基准面...

  一、常见定位技术 1.基站定位 每个手机基站都有一个ID标识符,插上sim卡的手机或其他终端可以搜集周围所有收到信...

  众所周知地球是一个不规则椭圆体,GIS中的坐标系定义由基准面和地图投影两组参数确定,而基准面的定义则由特定椭球体及...

  有个很严峻的问题 1/3 暑假已经过去…… 不知不觉,暑假已经过去了三分之一。这个暑假,对于有些孩子来说,注定是特...

上一篇:在西安~哪凉快哪呆着去

下一篇:没有了