objective-c - 重新定位 MKMapView 的 userLocationView?

标签 objective-c ios mapkit

我正在制作一个在森林中有一系列小径的应用程序。 GPS 会时不时地偏离几十米,因此我尝试编写一些代码,将 userLocationView“捕捉”到路径(用户可能所在的位置)。

我有一些代码可以扫描附近的踪迹,确定用户的可能位置,并获取它的 CLLocationCooperative2D。

现在我需要将该位置应用到 userLocationView。我以为这会起作用,但似乎不起作用:

userLocationAnnotation.coordinate = myDerivedCoordinate;

我意识到我可能可以创建自己的注释,但如果可能的话我想避免这种情况。

最佳答案

MapView 直接从 CLLocationManager 获取用户位置,并且没有记录的方法来拦截此交互。这样做比添加自己的注释需要更多工作,并且会导致应用程序拒绝。而且,重新定义系统提供的正确信息是没有意义的。这就是为什么 mapView.userLocation 是一个具有只读位置属性的 MKUserLocation

所以你必须创建自己的,大致:

  • 设置mapView.showsUserLocation = false;
  • 创建并启动位置管理器

    self.locationManager = [CLLocationManager 新]; self.locationManager.delegate = self; [self.locationManager startUpdatingLocation];

  • CLLocationManagerDelegatelocationManager:didUpdateToLocation:fromLocation: 添加/替换您自己的蓝点注释。

您可以使用 UIKit-Artwork-Extractor 获取蓝点图形(可能还有脉动的圆圈)。对于脉动效果,向 MKAnnotationView 添加一个具有不同帧的 UIImageView,或者取一个圆圈并使用 UIView animateWithDurationCGAffineTransformMakeScale 用于 view.transform 属性。

关于objective-c - 重新定位 MKMapView 的 userLocationView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11531408/

相关文章:

ios - 如何在 ePub 阅读器中使用朗读屏幕自动打开页面

ios - 在 iOS 中存储 session ID 的最佳方式是什么?

ios - 我的位置和目的地之间没有路线

objective-c - 枚举 - 发送到实例的无法识别的选择器

iphone - 是否可以读取和更新设置plist

ios - Tableview 不使用 Objective-c 显示 NewsFeed

iphone - 循环任务,如何在代码中实现

ios - 通过 segue 传递子类的最佳方法是什么?

swift mapkit 当前位置

ios - 同一应用中的 Google Maps SDK 和 Mapkit 导致崩溃