Штифты аннотации

Итак, у меня проблема с размещением позиций для выводов аннотаций в MKMapView.

Я просто пишу класс, наследуемый от NSObject, под названием "Аннотация", который использует протокол.

Итак, вот код:

Annotation.h

#import <Foundation/Foundation.h>

@interface Annotation : NSObject <MKAnnotation>
{
    CLLocationCoordinate2D _coordinate;
    NSUInteger _pinID;
}

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate andID:(NSUInteger)pinID;

@end

Annotation.m

#import "Annotation.h"

@implementation Annotation

@synthesize coordinate=_coordinate;

- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate andID:(NSUInteger)pinID{
    self = [super init];
    if (self != nil) {
        _coordinate = coordinate;
        _pinID = pinID;
    }
    return self;
}

- (NSString *)title {
    return [NSString stringWithFormat:@"Pin %u", _pinID];
}

- (NSString *)subtitle {
    return [NSString stringWithFormat:@"%.4f, %.4f", _coordinate.latitude, _coordinate.longitude];
}

@end

Затем я попытался подключить его к моей карте с помощью следующего кода

MapViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    CLLocationCoordinate2D coordinate;
    coordinate.latitude = 49.2802;
    coordinate.longitude = -123.1182;
    mapView.delegate = self;
    mapView.region = MKCoordinateRegionMakeWithDistance(coordinate, 2000, 2000); 


    CLLocationCoordinate2D newCoord = {2000, 2000};
    Annotation* annotation = [[Annotation alloc] initWithCoordinate:newCoord andID:1];
    [mapView addAnnotation:annotation];
}

Но это не имеет никакого смысла, булавки даже не показывает. Что я делаю неправильно? Я смотрел, чтобы помочь и уроки, но никаких рабочих результатов.

2 ответа

Попробуй это

- (void)viewDidLoad
{
    [super viewDidLoad];
    CLLocationCoordinate2D coordinate;
    coordinate.latitude = 49.2802;
    coordinate.longitude = -123.1182;
    mapView.delegate = self;
    mapView.region = MKCoordinateRegionMakeWithDistance(coordinate, 2000, 2000); 

    Annotation* annotation = [[Annotation alloc] initWithCoordinate:coordinate andID:1];
    [mapView addAnnotation:annotation];
}

Координаты аннотации неверны:

CLLocationCoordinate2D newCoord = {2000, 2000};
Annotation* annotation = [[Annotation alloc] initWithCoordinate:newCoord ...

Широта, долгота 2000, 2000 недействительна.


Вы, вероятно, хотите использовать coordinate вместо переменной (которую вы определили несколько строк в viewDidLoad):

Annotation* annotation = [[Annotation alloc] initWithCoordinate:coordinate andID:1];
Другие вопросы по тегам