1

私の注釈の画像は、初めて追加した後のものです。すべての注釈には、番号が付いた画像があります。マップをスクロールすると、メソッド「viewForAnnotation」が呼び出され (2 回目)、間違った画像が表示されます.間違った注釈が返されたようです...

ViewAnnotation メソッド:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{
static NSString *identifier = @"pin";
VBAnnotationView *view = (VBAnnotationView *)[self.MapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if (view == nil) {
    view = [[VBAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
}
return view; }

VBAnnotationView は私のカスタム MKAnnotationView であることに注意してください。

「ビュー」が nil でない場合、「dequeueReusableAnnotationViewWithIdentifier」によって見つかったビューは、間違った画像で返されます。「view == nill」かどうかのチェックをコメントアウトすると、すべての注釈の画像が正しいです。

最適化のために、注釈が既に存在する場合は「viewForAnnotation」メソッドをチェックインします。注釈が既に存在するかどうかのチェックを外すと、画像は正しく表示されます。

4

1 に答える 1

0

dequeueReusableAnnotationViewWithIdentifier は、注釈の「適切な」画像が何であるかを認識していません.使用する画像を提供しているだけです.取得したら、それが何の注釈になるかを伝えることによって、それを構成する必要があります.

if (view == nil) {
    view = [[VBAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
}
else view.annotation=annotation;
于 2013-02-20T02:52:26.877 に答える