1

ユーザーの現在地のデ​​フォルトのバブル アノテーションとともにカスタム アノテーションを追加していますが、マップビューに焦点が合っていないときに、ユーザーの位置アノテーションが別のカスタム ロケーションに変更されます。

私の viewForAnnotation メソッドは次のとおりです。

 -(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
 {

     NSString* annotationidentifier = @"customview";
     CustomAnnotationView *customannotationview = (CustomAnnotationView*) [self.mapview dequeueReusableAnnotationViewWithIdentifier:annotationidentifier];

     if([annotation isKindOfClass:[MKUserLocation class]])
     {
         customannotationview = [[CustomAnnotationView alloc] initWithAnnotationWithImage:annotation reuseIdentifier:annotationidentifier annotationviewimage:[UIImage imageNamed:@"location pin28.png"]];

         customannotationview.canShowCallout = YES;
         return customannotationview;


     }

     else if(![annotation isKindOfClass:[MKUserLocation class]] && annotation != _mapview.userLocation && (annotation.coordinate.latitude != _locationmanager.location.coordinate.latitude && annotation.coordinate.longitude != _locationmanager.location.coordinate.longitude))
     {
         customannotationview = [[CustomAnnotationView alloc] initWithAnnotationWithImage:annotation reuseIdentifier:annotationidentifier annotationviewimage:[UIImage imageNamed:@"image1.png"]];

         return customannotationview;


     }
     return customannotationview;

 }

カスタム注釈に条件を入れましたが、しばらくしてからユーザーの場所が焦点から外れていると、image1.pngに変わります

4

1 に答える 1

0

あなたの問題は、ユーザー アノテーションとロケーション アノテーションの両方が同じ識別子を使用しているという事実だと思います。マップをスクロールすると、注釈が再利用され (テーブルがセルを再利用するのと同じ方法で)、最終的には、場所の注釈の 1 つがユーザーの注釈に使用されます。

注釈に別の識別子を付けてみるか、場所の数が少ない場合は、再利用コードを削除して修正してください。

于 2012-07-09T10:56:07.167 に答える