Appleの「友達を探す」アプリで行われているように、ユーザーの場所の色を変更しようとしています(添付のスクリーンショットを参照)。
私は MapBox SDK を使用していることに注意してください。現在、次の方法があります。
- (RMMapLayer *)mapView:(RMMapView *)mapView layerForAnnotation:(RMAnnotation *)annotation
{
if (annotation.isUserLocationAnnotation)
return nil;
}
また、このスレッドを調べて、同様のことを行う方法について考えましたが、ユーザーの場所に関する同じコードは見つかりませんでした。Apple は「友達を探す」に静的な PNG 画像を使用しましたか? 別の色に変更すると、位置の周りの適応円が失われますか (それが可能であれば)?
アップデート
@Incanus が返信で述べたように、私の-[RMMapViewDelegate mapView:layerForAnnotation:]
コールバック メソッドでは、対応する 3 つの呼び出しisUserLocationAnnotation = YES
(ドット、精度円、パルス ハロー) を取得する必要があります。1 つしか取得できませんが、理由がわかりません。
また、追跡モードが変更されたときに注釈をカスタマイズしようとしました。これが私がしたことです:
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 フレームワークがまだそれを更新するため、通常に戻ることです。
興味深いのは、このメソッドを使用すると、isUserLocationAnnotation が YES に設定された 3 つの注釈がありますが、コールバックは 1 つしか得られないことです。
どんな助けでも感謝します。