【问题标题】:How to Increase the Radius of userLocation Annotation in MapkitMapkit中如何增加userLocation注解的半径
【发布时间】:2016-07-18 07:45:22
【问题描述】:

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

【问题讨论】:

    标签: ios objective-c mapkit userlocation mapkitannotation


    【解决方案1】:

    很遗憾,您不能简单地更改标准注释的行为;您需要自己接管注释视图的显示。

    用户位置是MKUserLocation 类型的地图注释。如果您实现MKMapViewDelegate 方法viewForAnnotation 并且地图正在显示用户的位置,那么将使用MKUserLocation 的实例调用委托方法 - 您的责任是返回nil,在这种情况下是标准注释view 将被显示,或者返回一个 MKAnnotationView 的实例来代替显示。

    您可以编写如下代码:

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

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

    【讨论】:

    • 你亲自做过吗?听起来像一个黑客。 Apple 让我们每次都这样做......
    • 为什么是“黑客”。无法修改标准注释的外观。要么你想要 Apple 的标准注释视图,要么你想要一些不同的东西。如果你想要不同的东西,你需要提供你自己的观点。
    • 我想要的只是增加用户位置注释圈的半径,但我做不到,所以我必须创建自己的叠加层,因此是一个 hack。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 2011-07-17
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多