2012-08-30 3 views
0

Я новичок в этом, и я ударяю головой о стену, поэтому любая помощь, которую вы можете предоставить, будет оценена по достоинству.Как я могу сделать аннотации MKMapView?

Мое приложение загружает ряд координат и названий, которые я превращаю в MKAnnotations. Я реализовал протокол MKAnnotation достаточно хорошо, потому что он перестал жаловаться, но вот код:

Annotator.h:

#import <Foundation/Foundation.h> 
#import "MapKit/Mapkit.h" 

@interface Annotator : NSObject <MKAnnotation> 

+ (Annotator *) createAnnotator:(CLLocationCoordinate2D *)coordinate 
         withTitle:(NSString *)title 
        andSubtitle:(NSString *)subtitle; 

@property (nonatomic, strong) NSString *myTitle; 
@property (nonatomic, strong) NSString *mySubtitle; 
@property (nonatomic) CLLocationCoordinate2D *coordinate; 

@end 

Довольно скучный до сих пор. Вот Annotator.m:

#import "Annotator.h" 

@implementation Annotator 

@synthesize myTitle = _myTitle; 
@synthesize mySubtitle = _mySubtitle; 
@synthesize coordinate = _coordinate; 

+ (Annotator *)createAnnotator:(CLLocationCoordinate2D *)coordinate 
        withTitle:(NSString *)title 
        andSubtitle:(NSString *)subtitle 
{ 
    Annotator *annotation = [[Annotator alloc] init]; 
    annotation.myTitle = title; 
    annotation.mySubtitle = subtitle; 
    annotation.coordinate = coordinate; 
    return annotation; 
} 

- (NSString *)title 
{ 
    return self.myTitle; 
} 

- (NSString *)subtitle 
{ 
    return self.mySubtitle; 
} 

@end 

Прямо сейчас, я получил большую часть другого кода в центральном контроллере представления, так как только запрос HTTP возвращается с данными, я итерация через него, создавая свою MKAnnotation объекты, а затем сделать это для каждого из них:

[self.territoryMap addAnnotation:locationPin]; 

... где self.territoryMap является выходом к MKMapView я перетащил в свой раскадровки, и locationPin является объектом MKAnnotation я создал с моей реализацией комментатора выше.

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

Есть ли что-то еще, что мне нужно делать? Я смущен! Спасибо за любую помощь, которую вы можете предоставить!

+0

Прямо перед строкой addAnnotation поместите 'NSLog (@" coord =% f,% f; map =% @ ", locationPin.coordinate.latitude, locationPin.coordinate.longitude, self. AreaMap);'. Что он регистрирует для координат (правильны ли латы/длинные)? Что он регистрирует для карты (неужели это случайно)? – Anna

ответ

0

Вы должны установить делегат MapViews. Тогда он должен работать нормально.

В качестве альтернативы можно изучить следующее: http://maybelost.com/2011/01/a-basic-mapview-and-annotation-tutorial/ Это похоже на то, что вы пытаетесь сделать!

+0

Спасибо за ответ! Я быстро просмотрел учебник, и не показалось, что делегат был там нужен, поэтому я все еще немного смущен, но я по-прежнему ценю ссылку, поскольку эта выглядит как лучшая параллель с тем, что я ищущих, чем другие, которые я нашел. Я думаю, что я буду делать дальше, это реализовать этот пример сам по себе, чтобы увидеть, работает ли это для меня. Может быть, в моем болоте кода есть что-то еще, что нарушает вещи. Пожелай мне удачи! –

+0

ОК, оказывается, я ошибся; моя первоначальная реализация протокола, по-видимому, не соответствовала . Я думал, что это произошло потому, что (а) код прекратил выходить из строя и (б) я мог бы получить заголовок и координаты в журнале отладки просто отлично. Но изменение моего протокола (и того, как я его называю), чтобы соответствовать этому (с небольшими корректировками), работало нормально. Я все еще немного смущен и должен выяснить, что я сделал не так, но, по крайней мере, это работает. Спасибо, что указали мне правильный путь! –

Смежные вопросы