1

こんにちは、私はこの方法を得ました:

-(void)adresseZeigen
{
    NSLog(@"%s",__PRETTY_FUNCTION__);

    selectedAnnotation = [[MKPointAnnotation alloc]init];

    selectedAnnotation.title = selectedCompanyName;
    selectedAnnotation.subtitle = selectedCompanyAdresse;
    selectedAnnotation.coordinate = selectedCompanyPoint;


    NSLog(@"selected title: %@",selectedAnnotation.title);
    NSLog(@"selected subtitle: %@",selectedAnnotation.subtitle);
    NSLog(@"selected latitude is: %f", self.selectedAnnotation.coordinate.latitude );
    NSLog(@"selected longitude is: %f", self.selectedAnnotation.coordinate.longitude );

    [mapView addAnnotation:selectedAnnotation];

    MKCoordinateRegion selectedRegion;

    selectedRegion.center = selectedCompanyPoint;
    selectedRegion.span.longitudeDelta = 0.01;
    selectedRegion.span.latitudeDelta = 0.01;
    [mapView setRegion:selectedRegion animated:YES];

}

実際には、マップビューに注釈が表示されるはずです。

私のログ出力は次のとおりです。

-[SecondViewController adresseZeigen]
selected title: Company 2
selected subtitle: Company 2 Adresse
selected latitude is: 48.620000
selected longitude is: 9.460000

しかし、どういうわけか、地図上に注釈が表示されません。

誰か助けてくれませんか?

4

1 に答える 1

0

これだけでは、マップ上に実際の注釈ビューは表示されません。マップに注釈ビューを含めるには、View Controller の MKMapViewDelegate を宣言し、それを mapview デリゲートとして宣言して、メソッドを実装する必要があります。

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

これは、マップ ビューの注釈ビューを実際に生成するメソッドです。あなたの場合MKPinAnnotationView、MKPointAnnotation に を使用することをお勧めします。

プロトコル リファレンスはこちらで確認できます。

編集: メソッドの実装例 (すべての MKPointAnnotations が同じ目的を持っていることを前提としています) は次のようになります。

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    static NSString *reuseId = @"MyReuseID";
    MKPinAnnotationView * view = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseId];
    if (!view) {
        view = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseId];
        //custom setup of your view, such as
        //view.canShowCallout = YES;
    }
    return view;
}
于 2013-05-14T08:24:42.813 に答える