Штифты аннотации
Итак, у меня проблема с размещением позиций для выводов аннотаций в 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];