我正在制作一个在森林中有一系列路径的应用。 GPS现在将要关闭几十米,所以我正在尝试编写一些代码,将userLocationView“捕捉”到跟踪(用户可能在哪里)。
我有一些代码可以扫描附近的路径,确定用户的可能位置,然后获取CLLocationCoordinate2D。
现在我需要将该位置应用于userLocationView。我认为这会起作用,但似乎不是:
userLocationAnnotation.coordinate = myDerivedCoordinate;
我意识到我可能会创建自己的注释,但如果可能的话我想避免这种情况。
答案 0 :(得分:1)
MapView
直接从CLLocationManager
获取用户位置,并且没有记录的方法来拦截此交互。这样做比添加自己的注释更有用,也是应用拒绝的原因。此外,重新定义系统提供的正确信息是没有意义的。这就是mapView.userLocation
是具有只读位置属性的MKUserLocation
的原因。
所以你必须创建自己的,粗略的:
mapView.showsUserLocation = false;
创建并启动位置管理器
self.locationManager = [CLLocationManager new]; self.locationManager.delegate = self; [self.locationManager startUpdatingLocation];
从locationManager:didUpdateToLocation:fromLocation:
的{{1}}添加/替换您自己的蓝点注释。
您可以使用UIKit-Artwork-Extractor获取蓝点图形(可能还有脉动圆圈)。对于脉动效果,使用不同的帧添加到CLLocationManagerDelegate
MKAnnotationView
,或者使用一个圆圈并使用UIImageView
UIView animateWithDuration
作为CGAffineTransformMakeScale
属性。