15

現在地アイコンにカスタムコールアウト(タイトルとサブタイトル)を使用しています。以下を実行してデフォルトの注釈を無効にしようとしましたが、機能しません。

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation
{
    NSLog(@"viewForAnnotation");
    if ([annotation isKindOfClass:[MKUserLocation class]])
    {
        MKAnnotationView *userLocationView = [mapView viewForAnnotation:annotation];
        userLocationView.canShowCallout = NO;
        NSLog(@"[annotation isKindOfClass:[MKUserLocation class]");
        return nil;
    }

}

それが機能する唯一の方法は

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)ann
{
    if([ann.annotation isKindOfClass:[MKUserLocation class]] )
    {
       [mymap deselectAnnotation:ann.annotation animated:NO];
    }
}

しかし、それは時々遅れます。現在の場所の注釈のデフォルトのコールアウトビューを無効にする他の方法はありますか?どんな助けでもありがたいです。

4

6 に答える 6

6

Swiftを使用したこれの更新(chaturの回答に基づく):

func mapView(mapView: MKMapView!, didAddAnnotationViews views: [MKAnnotationView]!) {

    for view in views {
        if view.annotation.isKindOfClass(MKUserLocation) {
            view.canShowCallout = false
        }
    }

}

注:これを使用して、それを機能させるために他に何も必要としませんでした

于 2015-02-18T14:15:33.557 に答える
0

編集

誤解してすみません。

私はこれに頭をぶつけました。

これが私が成功した唯一の方法です。この方法の問題は、UserLocation ビューを変更する必要があることです。そのため、ユーザーフレンドリーではないかもしれません。

ともかく:

 - (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
if ([annotation isKindOfClass:[MKUserLocation class]]){

        MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation                                                                           reuseIdentifier:nil];
        annotationView.image = [UIImage imageNamed:@"your-icon.png"];
        annotationView.enabled=NO;
         return annotationView;
    };
     ........}

私の子供を連れて行くために幼稚園に走らなければなりません:)

幸運を

于 2011-12-09T08:50:07.933 に答える