在iOS上自定义用户位置色调

时间:2013-11-13 12:18:17

标签: ios colors mapbox userlocation

我正在尝试更改用户位置的颜色,就像Apple在“查找我的朋友”应用程序中所做的那样(参见随附的屏幕截图)。

请注意,我正在使用MapBox SDK,目前我有以下方法:

- (RMMapLayer *)mapView:(RMMapView *)mapView layerForAnnotation:(RMAnnotation *)annotation
{
    if (annotation.isUserLocationAnnotation)
        return nil;
}

我还调查this thread以了解我应该如何做类似的事情,但没有找到相同的用户位置代码。 Apple是否使用静态PNG图片查找我的朋友?通过将其更改为另一种颜色(如果可能的话),我是否会失去位置周围的自适应圆?

更新

正如@Incanus在回复中所说,在我的-[RMMapViewDelegate mapView:layerForAnnotation:]回调方法中,我应该得到三个与isUserLocationAnnotation = YES对应的调用 - 点,精确度圆和脉冲光晕。 我只得到一个,我不明白为什么。

此外,我尝试在跟踪模式更改时自定义注释,这就是我所做的:

if (self.mMapView.userTrackingMode == RMUserTrackingModeNone)
{
    for (RMAnnotation *annotation in self.mMapView.annotations) {
        if (annotation.isUserLocationAnnotation) {

            if ([annotation.annotationType isEqualToString:@"RMAccuracyCircleAnnotation"]) {

                [(RMCircle*)annotation.layer setFillColor:[[UIColor redColor] colorWithAlphaComponent:0.6]];
                [(RMCircle*)annotation.layer removeAllAnimations];
            }

        }
    }

    [self enableBouncingOnLayer:self.mMapView.userLocation.layer];
}
else
{
    [self.mMapView.userLocation.layer removeAnimationForKey:@"animateScale"];
}

到目前为止一切顺利,我得到蓝色精度圆圈变成红色并停止改变大小。 问题是,MapBox框架仍会更新它,因此它将恢复正常。

有趣的是,使用这种方法,我确实有3个注释,isUserLocationAnnotation设置为YES,但我只得到一个回调。

任何帮助表示感谢。

Find my friends app screenshot

3 个答案:

答案 0 :(得分:3)

在Swift 3中,

ember-simple-auth v1.1.0

现在非常直接。

答案 1 :(得分:0)

对于MapBox SDK,您可以访问资源包中的实际蓝点,并创建一个有色版本,可以随时使用Core Graphics,也可以提前创建捆绑中的另一个资源。

在“寻找我的朋友”中,点仍然是蓝色的 - 它们实际上只是使用更改的副本进行其他注释。你也可以做到的。

您可能也对https://github.com/0xced/UIKit-Artwork-Extractor感兴趣,专门用于从Find My Friends应用程序中提取资源,这实际上是我们在MapKit框架上用来获取MapBox SDK的蓝点; - )

答案 2 :(得分:0)

正如Incanus指出的那样,我使用layerForAnnotation:方法来自定义我的用户注释。 然后我创建了这个方法来强制更新图层,以便可以再次绘制它。

- (void)refreshUserAnnotation {

    [mUserAnnotation setLayer: [self mapView:mMapView layerForAnnotation:mUserAnnotation]]; 

}