4

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 つしか得られないことです。

どんな助けでも感謝します。

友達を探すアプリのスクリーンショット

4

3 に答える 3

4

スイフト3では、

mapView.tintColor = .red

今は素晴らしくまっすぐです。

于 2017-06-19T15:25:07.200 に答える
0

Incanus が指摘したように、このlayerForAnnotation:メソッドを使用してユーザー アノテーションをカスタマイズしています。次に、このメソッドを作成してレイヤーを強制的に更新し、再度描画できるようにしました。

- (void)refreshUserAnnotation {

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

}
于 2014-07-21T12:22:41.917 に答える
0

MapBox SDK の場合、リソース バンドル内の実際の青い点にアクセスして、Core Graphics を使用してオンザフライで、またはバンドル内の別のリソースとして前もって着色バージョンを作成できます。

「友達を探す」では、ドットはまだ青色です。実際には、他の注釈用に変更されたコピーを使用しているだけです。同じことができます。

また、特に Find My Friends アプリからリソースを引き出すためにhttps://github.com/0xced/UIKit-Artwork-Extractorに興味があるかもしれません。これは実際に MapKit フレームワークで使用して、 MapBox SDK ;-)

于 2013-11-13T18:07:46.227 に答える