我正在尝试更改用户位置的颜色,因为它是在 Apple 的“查找我的朋友”应用程序中完成的(参见随附的屏幕截图)。
请注意,我使用的是 MapBox SDK,我目前有以下方法:
- (RMMapLayer *)mapView:(RMMapView *)mapView layerForAnnotation:(RMAnnotation *)annotation
{
if (annotation.isUserLocationAnnotation)
return nil;
}
我还查看了这个线程,以了解我应该如何做类似的事情,但没有找到相同的用户位置代码。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,但我只得到一个回调。
任何帮助表示赞赏。