首页 > 根据CoreLocation返回的数据在map view上标出大头针,但为什么总是与地图显示的userlocation有一段距离

根据CoreLocation返回的数据在map view上标出大头针,但为什么总是与地图显示的userlocation有一段距离

我用了CoreLocation获取经纬度,在收到经纬度数据后使用下面的代码配置地图:

var Map = MKMapView()
let Center = CLLocationCoordinate2D(纬度数据, 精度数据)
let Span = MKCoordinateSpanMake(0.02, 0.02)
let annotation = MKPointAnnotation()
annotation.coordinate = Center
annotation.title = "当前位置"
Map.showsUserLocation = true
Map.region = MKCoordinateRegionMake(Center, Span)
Map.addAnnotation(annotation)

为啥会差这么一点呢?mapview不也是用CoreLocation的数据吗?但是如我我吧经纬度数据复制出来,放到OS X的地图应用里面搜索,却能得到我当前的位置。


1、 GPS,WGS-84,原始坐标体系。一般用国际标准的GPS记录仪记录下来的坐标,都是GPS的坐标。我们国家是不允许使用wgs-84的,原因好像是为了保密

2、 GCJ-02,国测局02年发布的坐标体系。又称“火星坐标”。比如谷歌,腾讯,高德都在用这个坐标体系。GCJ-02也是国内最广泛使用的坐标体系。
3、 其他坐标体系。一般都是由GCJ-02进过偏移算法得到的。这种体系就根据每个公司的不同,坐标体系都不一样了。比如,百度和搜狗就使用自己的坐标体系,与其他坐标体系不兼容。
所以你的mpview的话,应该是百度地图的坐标肯定有偏差的


CoreLocation 的坐标在国内有一定偏移,貌似是为了国家安全什么的。但有近似的修正算法。你搜一下『火星坐标』之类的。


用CoreLocation拿到的坐标是wgs84坐标,而国内的坐标系统采用的是国测局坐标,需要采用一个算法进行坐标转换,网上有相应的转换算法

【热门文章】
【热门文章】