1

我的应用程序需要用户许可并将地图移动到该位置。默认情况下,在该位置MapKit添加一个蓝色图标,该图标正在生成一些脉冲。
我四处搜索,但我发现如何在周围添加一个 1000m 的圆圈userLocation。我不想要那个。您可以说我正在寻找自定义userLocation默认值annotation。它产生的蓝色脉冲我想增加它radius。当这个蓝色脉冲击中自定义annotation时,应该触发一个方法。那么如何实现呢?

4

1 回答 1

1

不幸的是,您不能简单地改变标准注释的行为;您需要自己接管注释视图的显示。

用户位置是类型的地图注释MKUserLocation。如果您实现该MKMapViewDelegate方法viewForAnnotation并且地图正在显示用户的位置,则将使用以下实例调用委托方法MKUserLocation- 您的责任是 return nil,在这种情况下将显示标准注释视图,或者返回其MKAnnotationView实例改为显示。

您可以编写如下代码:

- (MKAnnotationView *)mapView:(MKMapView *)mapView
        viewForAnnotation:(id<MKAnnotation>)annotation {
    if ([annotation isKindOfClass:[MKUserLocation class]]) {
        return [[MyPulsingViewAnnotation alloc] initWithUserLocation:annotation];
    }

    return nil;
}

至于在“脉冲”与另一个注释相交时执行一些动画,您需要将其他注释位置传递给您的脉冲视图并在运行动画时检查坐标。

于 2016-07-18T07:58:43.680 回答