注釈マップを使用し、ピンに複数の画像を使用しましたが、ズームインまたはズームアウトするたびに、すべてのピンが 1 つの画像に変わります。
Web サービスから場所を取得し、それらを認識するために、文字列 ( CustAttr
) を "T" または "P" として使用しました。
問題は、Web サービスからの最後の呼び出しが行われCustAttr = T
、ズームインまたはズームアウトすると、mapViewviewForAnnotation
メソッドが呼び出されてすべてが描画されT
、すべてのP
ピンが変更されることです。
メソッドのコードは次のとおりです。
-(MKAnnotationView*) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]]) {
return nil;
}
static NSString* AnnotationIndentifer = @"AnnotationIdentifier";
if ([custAttr isEqualToString:@"T"]) // ATMs
{
MKAnnotationView* pinView;
pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIndentifer];
MapAnnotation* mapAnnotation = annotation;
pinView.canShowCallout = YES;
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
pinView.rightCalloutAccessoryView = rightButton;
if (mapAnnotation.isClosest) {
pinView.image = [UIImage imageNamed:@"Closest_ATM.png"];
}
if (mapAnnotation.isOffline) {
pinView.image = [UIImage imageNamed:@"Offline_ATM.png"];
}
pinView.annotation = annotation;
return pinView;
}else if ([custAttr isEqualToString:@"P"]) // POIs
{
MKAnnotationView* pinView;
pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIndentifer];
pinView.canShowCallout = YES;
pinView.image = [UIImage imageNamed:@"Location_POI.png"];
pinView.annotation = annotation;
return pinView;
}
return nil;
}
この問題を解決するにはどうすればよいですか? ズームイン/ズームアウト時にこのメソッドを呼び出さないようにする方法はありますか、または同じ画像のように再度描画させる別の方法はありますか?