0

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

我有一些代码可以扫描附近的小径,确定用户的可能位置,并为其获取 CLLocationCoordinate2D。

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

userLocationAnnotation.coordinate = myDerivedCoordinate;

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

4

1 回答 1

1

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

因此,您必须大致创建自己的:

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

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

  • 添加/替换您自己的蓝点注释来自locationManager:didUpdateToLocation:fromLocation:.CLLocationManagerDelegate

您可以使用 UIKit-Artwork-Extractor 获得蓝点图形(可能还有脉动的圆圈)。对于脉动效果,将不同的帧添加到MKAnnotationViewa中,或者取一个圆圈并与 a一起使用作为属性。UIImageViewUIView animateWithDurationCGAffineTransformMakeScaleview.transform

于 2012-07-17T22:53:21.583 回答