gpt4 book ai didi

iphone - 为什么 MKMapView 用户位置属性有一段时间是垃圾……?

转载 作者:行者123 更新时间:2023-12-03 19:37:21 24 4
gpt4 key购买 nike

我在 IB 中定义了一个 map View ,并将其设置为显示用户位置。

在我的应用程序中,在 -viewDidAppear 中,我查询 self.mapView.userLocation.location.coordinate,它返回了疯狂的值,例如:

纬度:4.8194501961644877e-49
经度:2.2993313035571993e-59

但是,下次调用 -viewDidAppear 时(在我简单地移动到另一个选项卡式 View 然后返回到此 View 之后),userLocation 属性准确地保存了我当前位置的正确值。

似乎在我初次调用时,userLocation 属性尚未初始化,但尽管已阅读 Apple 的文档,但我看不到任何说明该属性仅有效的警告做完xxx后。

userLocation有效使用之前是否必须发生一些事情,或者我应该使用CLLocationManager并询问它?

预先感谢您的帮助。

遗憾的是,托马斯的建议没有帮助。我后来发现的是:

如果 showsUserLocation 为 NO,则 userLocation 永远不会正确设置,并且 -MapView:didUpdateUserLocation: 永远不会被调用,因此我永远不会得到合理的位置值。

因此,要获取用户的位置,我必须将 showsUserLocation 设置为 YES,但这意味着在我的所有注释都添加到 View 中(不包括用户的位置)后,我然后计算包含所有内容并以正确的缩放级别显示所有内容所需的跨度。不过,在我这样做之后, View 会横向跳转,因为 map View 然后会自动将用户的位置显示为蓝色 Blob !由于它从未包含在计算缩放级别的注释中,因此我无法将其合并到我的计算中。啊啊!

请注意,当 showsUserLocation 为 YES 时,-MapView:didUpdateUserLocation: 会被调用,但只有在我计算完注释的所有坐标之后,而不是之前!

最佳答案

我假设它尚未完成查找用户位置 - 它必须解决这个问题,并且可能需要一段时间。

不要在 viewDidLoad 中使用它,而是使用此委托(delegate)方法:

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

您需要将您的 map View 委托(delegate)设置为 self。 :)

关于iphone - 为什么 MKMapView 用户位置属性有一段时间是垃圾……?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4606539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com