什么原因?
能想到的原因:坐标系不同
- CLLocationManager:在国内使用的火星坐标(GCJ-02)
- MKMapView:不管在哪里用的都是国际标准的坐标系(WGS-84)
所以有偏差是必然的,当然这里要注意:CLLocationManager 在国内才是火星坐标。
怎么解决
- 方案一:
将坐标进行转换,这里需要注意,需要判断是不是在中国,是的话才进行坐标转换。
- 方案二:
这也是我采用的方案,就是定位操作直接用 MKMapView,不用 CLLocationManager,这样不用考虑那么多情况,这样只会有一种标准,不会出现坐标不一样的情况。