我正在尝试更改用户位置的颜色,就像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,但我只得到一个回调。
任何帮助表示感谢。
答案 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]];
}