iOS:我从CLLocationManager和MKMapView获得的位置之间的差异';用户位置属性

iOS:我从CLLocationManager和MKMapView获得的位置之间的差异';用户位置属性,ios,mkmapview,cllocationmanager,Ios,Mkmapview,Cllocationmanager,我有两个视图控制器:tweetViewController和MapViewController。前者是用户发布tweet,在其中我使用CLLocationManager获取用户的位置。调用locationManager:didUpdateToLocation:fromLocation:后,我得到了“locationA”,我将提醒用户他的位置已设置 用户只需发布带有“locationA”的推文即可。或者通过单击位置信息手动更改位置(如果位置不够准确)。在这种情况下,MapViewControlle

我有两个视图控制器:
tweetViewController
MapViewController
。前者是用户发布tweet,在其中我使用
CLLocationManager
获取用户的位置。调用
locationManager:didUpdateToLocation:fromLocation:
后,我得到了“locationA”,我将提醒用户他的位置已设置

用户只需发布带有“locationA”的推文即可。或者通过单击位置信息手动更改位置(如果位置不够准确)。在这种情况下,
MapViewController
被按下,并且有一个可拖动的pin注释与位置A下拉到地图。我发现大头针离我的位置有几百米远。然后,我设置
mapView.showUserLocation=YES
。我发现蓝色泡泡的位置比别针准确得多。因此,我的问题是如何在
tweetViewController
中获取mapView的
userLocation
,而不是从
CLLocationManager
获取位置

我在中国,我一直在寻找同样的问题。有人说中国的地图是经过改造的,所以一定有偏移量。有什么处理这个问题的建议吗?
提前感谢。

CLLocationManager
在其所有实例中使用相同的数据
MKMapView
在内部使用
CLLocationManager
的数据。也就是说,解决方案是让
MKMapView
showUserLocation:
执行自己的操作。同时,创建
CLLocationManager
及其委托的实例

学员信息将为您提供
MKMapView
蓝色pin的GPS坐标位置。一切都将彼此同步。

最后, 我使用
MKMapView
实例来解决这个问题

背景

mapView.showUserLocation=是/否//开始/停止定位。

使用

-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 

以获取用户位置。在我的控制器中,
mapView
未显示,它仅用于获取用户位置,并且该位置比我从
locManager

获取的位置更准确。您好,谢谢您的回答。我仍然有一个问题,在我的例子中,如果用户不单击“更改位置”按钮,将不会有mapViewController。另外,我想知道如果使用相同的CLLocationManager数据,为什么这两个坐标会不同?是说MKMapView对坐标做了一些调整吗?如果你能给出答案,那就太好了。参考:您是否正确设置了位置管理器精度和距离过滤器设置?通常,默认值会提供最佳的准确性。您是否也根据代理事件正确更新了位置?完整地考虑到,当使用CLSoCuffMead开始更新位置时,可能会出现第一个返回的位置由于连续的近似(蜂窝信号先,GPS信号稍后)而非常不准确,或者因为它刚刚到达最后已知的位置(可能是小时或几天):总是检查“NealS位置”。时间戳并将其与当前日期进行比较。我将desiredAccuracy=kCLLocationAccuracyBest和distanceFilter=5.0f设置为足够精确。我可以多次调用委托方法,比如五次,然后位置就稳定了。不再调用代理。然后我按下mapViewController。但是,locationManager的位置与mapView的用户位置相距数百米。。。有线索吗?