0

以下では、マップの注釈を作成しました。これは完全に機能し、タイトルとサブタイトルが表示されます。

しかし、注釈の左側に小さな画像を追加したいのですが、それを機能させるために以下のコードに何をする必要があるかわかりません。

// Annotation
CLLocationCoordinate2D poseLocation;
poseLocation.latitude = POSE_LATITUDE;
poseLocation.longitude = POSE_LONGITUDE;

Annotation *myAnnotation = [[Annotation alloc] init];
myAnnotation.coordinate = poseLocation;
myAnnotation.title = @"Pose Beauty Salon";
myAnnotation.subtitle = @"100, Moneyhaw Road";

[self.myMapView addAnnotation:myAnnotation];
4

2 に答える 2

2

最初に myMapView のデリゲートを設定し、viewForAnnotation デリゲート メソッドを実装する必要があります。

そこで、プロパティ leftCalloutAccessoryView を持つ MKAnnotationView インスタンスを返します。

標準吹き出しの左側に表示するビュー。このプロパティのデフォルト値は nil です。通常、左側の吹き出しビューは、注釈に関する情報を表示したり、アプリケーションによって提供されるカスタム情報にリンクしたりするために使用されます。ビューの高さは 32 ピクセル以下にする必要があります。

leftCalloutAccessoryView では、そこに画像を割り当てることができます。例えば:

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

    MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[self.myMapView dequeueReusableAnnotationViewWithIdentifier:@"annotation"];

    if (annotationView == nil) {
        annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"annotation"];            
        UIImageView *imageView = //initialize your image view here
        annotationView.leftCalloutAccessoryView = imageView;
    }

    annotationView.annotation = annotation;
    return annotationView;
}

PS: どうやらここで同様の質問をしたようです: Add image to the left of my annotations . 別の質問を投稿する必要があるかどうかわかりません。まずはこれを実践してみてください。

于 2013-06-03T15:04:28.083 に答える
0
-(MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{
MKPinAnnotationView *MyPin=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"current"];

myImage = [UIImage imageNamed:imagename];
CGRect cropRect = CGRectMake(0.0, 0.0,35.0, 35.0);
myImageView = [[UIImageView alloc] initWithFrame:cropRect];
myImageView.clipsToBounds = YES;
myImageView.image = myImage;
MyPin.leftCalloutAccessoryView =myImageView;
MyPin.highlighted=YES;
MyPin.canShowCallout=YES;
return MyPin;

}

それは私のために働きます、これを試してください

于 2013-06-12T08:45:27.800 に答える