2

MKAnnotation に画像を追加しようとしています。以下のコードがあります。これに @"map_icon.png" を追加するにはどうすればよいですか? どんな助けでも素晴らしいでしょう。ありがとうございました!

mapView.m ファイル:

// retrieve latitude and longitude from the dictionary entry

location.latitude = [dictionary[@"placeLatitude"] doubleValue];
location.longitude = [dictionary[@"placeLongitude"] doubleValue];

// create the annotation

newAnnotation = [[MapViewAnnotation alloc] initWithTitle:dictionary[@"name"]
                                               andCoordinate:location];

MapViewAnnotation.m ファイル

- (id)initWithTitle:(NSString *)ttl andCoordinate:(CLLocationCoordinate2D)c2d 
{
title = ttl;
coordinate = c2d;
return self;
}

ありがとうございました!

4

2 に答える 2

5

に応答することでこれを行いますmapView:viewForAnnotation。例:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[MapViewAnnotation class]])
    {
        MKAnnotationView* annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation
                                                                        reuseIdentifier:@"MyCustomAnnotation"];
        annotationView.image = [UIImage imageNamed:@"map_icon.png"];
        annotationView.canShowCallout = YES;

        // If you've added the QuartzCore.framework to your project, you can also add a shadows/borders/etc.
        // For example, this code adds a shadow
        //            
        // [annotationView.layer setShadowColor:[UIColor blackColor].CGColor];
        // [annotationView.layer setShadowOpacity:0.8f];
        // [annotationView.layer setShadowRadius:5.0f];
        // [annotationView.layer setShadowOffset:CGSizeMake(0, 0)];
        // [annotationView setBackgroundColor:[UIColor whiteColor]];

        return annotationView;
    }

    // Note, if the annotation isn't your custom annotation (e.g. a `MKUserAnnotation`)
    // then return nil so default behavior will take place.

    return nil;
}

詳細については、位置認識プログラミング ガイドの「マップへの注釈の追加」セクションを参照してください。

于 2013-02-11T03:29:36.000 に答える
2

mapView コントローラーに MKMapViewDelegate を実装する

myMapView = [[MKMapView alloc] initWithFrame:self.view.bounds];
myMapView.delegate = self;

メソッドを mapView Controller に実装する

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

デフォルトのピンをカスタム イメージに置き換えたい場合

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

if ([annotation isKindOfClass:[MapViewAnnotation class]])
{
    MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"annotation"];
    [annotationView setImage:[UIImage imageNamed:@"map_icon.png"]];
    return annotationView;
}
return nil;
}

吹き出しに画像が必要な場合

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
if ([annotation isKindOfClass:[MapViewAnnotation class]])
{
    MKAnnotationView *annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"annotation"];
    UIImageView *pin = [[UIImageView alloc] initWithFrame:CGRectMake(-5, -5, 10, 10)];
    [pin setImage:[UIImage imageNamed:@"map_icon.png"]];
    annotationView.leftCalloutAccessoryView = pin;
    return annotationView;
}
return nil;
}
于 2013-02-11T03:29:57.933 に答える