0

MapKitクラスのMkannotationとMKAnnotationView(もちろん両方ともサブクラス化されています)を利用するアプリに取り組んでいます。

私の質問は、すべてが異なる画像を持つ複数のFGAnnotationViewをマップ(約5)に配置するにはどうすればよいですか?

5つの異なるクラスを作成し、一致するものを初期化できることは知っていますが、ifステートメントを内部に配置するメソッドがあるのではないかと思いました。

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

のような機能

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
MKAnnotationView *annView = nil;

if (annotation == myRestaurantAnnotation) {

    FGAnnotationView *fgAnnView = (FGAnnotationView*)[self.mapView dequeueReusableAnnotationViewWithIdentifier:@"Location"];
    fgAnnView = [[FGAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Location"];
}
return annView;
}

誰?

4

1 に答える 1

2

もうすぐです。これを試して

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
    MKAnnotationView *annView = nil;

    FGAnnotationView *fgAnnView = (FGAnnotationView*)[self.mapView dequeueReusableAnnotationViewWithIdentifier:@"Location"];

    if (annotation == myRestaurantAnnotation) {
        fgAnnView.image = //MAGIC GOES HERE//;
    } else if (annotation == myBankAnnotation) {
        fgAnnView.image = //MAGIC GOES HERE//;
    }
    return fgAnnView;
}

マップにユーザーの場所を描画させる場合は、アノテーションのクラスをチェックして、それがMKUserLocationでないことを確認する必要があります。その場合は、nilを返します。各アノテーションクラスのインスタンスが複数ある場合は、次のように、オブジェクト自体と一致させるのではなく、クラスを使用して設定する画像を決定できます。

if ([annotation isKindOfClass:[MKUserLocation class]]) {
    return nil;
} else if ([annotation isKindOfClass:[FGRestaurantAnnotation class]]) {
    fgAnnView.image = //YOUR IMAGE CODE//
}
于 2012-11-26T22:16:50.530 に答える