gpt4 book ai didi

iphone - 放置蓝点(用户位置) 仅使用 CLLocationManager

转载 作者:行者123 更新时间:2023-12-03 20:16:19 25 4
gpt4 key购买 nike

我已经阅读了无数关于堆栈和苹果文档的帖子,但找不到任何解决这个问题的方法。

问题是,如果您设置mapView.showsUserLocation = YES,那么MapKit将开始向您的手机发出自己的GPS查询。

来自苹果文档:

Setting this property to YES causes the map view to use the Core Location framework to find the current location. As long as this property is YES, the map view continues to track the user’s location and update it periodically.

如果您还想使用 CLLocationManager,那么当您调用 [mylocationmanager startUpdatingLocation] 时,您将在手机上进行第二次 GPS 查询。

现在您有 2 个独立的进程请求 GPS 位置。

在模拟器上不是问题,但如果您在真实手机上尝试,则需要非常非常长的时间才能获取 GPS 位置。它也不一致,10秒到1分钟,而如果你关闭mapView.showsUserLocation,它需要2-3秒,非常一致。

总的来说,同时使用两者似乎是一种非常糟糕的做法。

为了灵 active 和控制性,我宁愿使用 CLLocationManager,但如果你不设置 mapView.showsUserLocation = YES,那么你就不会得到蓝点!

我尝试了通常的覆盖注释方法:例如:

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation
{
if ([annotation isKindOfClass:MKUserLocation.class]) {
//it's the built-in user location annotation, return nil to get default blue dot...
return nil;
}

//handle your custom annotations...
}

但它不起作用,很可能是因为从未调用过在 map 上实际放置用户注释。

那么有没有人有一个解决方案,只使用 CLLocationManager 将用户的位置放置在 map 上?

最佳答案

仅仅重写 viewForAnnotation 方法是不够的,您首先必须通过调用将注释添加到 map

[mapView addAnnotation:annotationObject];

您的annotationObject可以是任何实现MKAnnotation协议(protocol)的类的实例。您可以在“MapKit 指南”的“注释应用程序”部分找到详细信息。

关于iphone - 放置蓝点(用户位置) 仅使用 CLLocationManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109464/

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