用户位置气泡注释更改为自定义注释

时间:2012-07-09 09:18:31

标签: iphone objective-c ios5 xcode4.3

我正在添加自定义注释以及用户的当前位置默认气泡注释,但是在没有关注mapview时,用户位置注释会更改为其他自定义位置。

我的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;

 }

我已经在自定义注释中添加了条件,但是如果用户位置在somtime失焦后仍然会在一段时间后更改为image1.png

1 个答案:

答案 0 :(得分:0)

我相信您的问题是您的用户注释和位置注释都使用相同的标识符。当您滚动地图时,会发现您的注释会被重复使用(与表格重用单元格的方式相同),最终,您的一个位置注释将用于您的用户注释。

尝试给注释添加不同的标识符,或者,如果您的位置数量很少,请删除应该修复它的重用代码。