Отобразить аннотацию в наборе карт - PullRequest
0 голосов
/ 30 августа 2010

Я работаю с Mapkit, и мне нужно показывать аннотации на карте, но я не могу отобразить аннотацию.Вот мой код:

@interface MyMapView : UIViewController <MKAnnotation,MKMapViewDelegate>{

MKMapView *Obj_Map_View;
MKPlacemark *pmark;
MKReverseGeocoder *geocoder1;
}

@end


#import "MyMapView.h"
@implementation MyMapView

- (id)init {
    if (self = [super init]) {

    }
    return self;
}

- (void)loadView {  
    [super loadView];   
    Obj_Map_View = [[MKMapView alloc]initWithFrame:self.view.bounds];
    Obj_Map_View.showsUserLocation =YES;
    Obj_Map_View.mapType=MKMapTypeStandard;
    [self.view addSubview:Obj_Map_View];
    Obj_Map_View.delegate = self;

    CLLocationCoordinate2D cord =  {latitude: 19.120000, longitude: 73.020000};
    MKCoordinateSpan span = {latitudeDelta:0.3, longitudeDelta:0.3};
    MKCoordinateRegion reg= {cord,span};
    [Obj_Map_View setRegion:reg animated:YES];
    //[Obj_Map_View release];
}

- (NSString *)subtitle{
    return @"Sub Title";
}

- (NSString *)title{
    return @"Title";
}

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation
{
    MKPinAnnotationView *annov = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"Current location"];
    annov.animatesDrop = TRUE;
    [annotation title]==@"Current location";
    annov.canShowCallout = YES;
    [annov setPinColor:MKPinAnnotationColorGreen];
    return annov;
}

Приведенный выше код работает нормально и отображает карту, но без аннотации.

Ответы [ 2 ]

2 голосов
/ 30 августа 2010

Обычно класс, соответствующий протоколу MKAnnotation, не является контроллером представления, это класс данных.

Вам потребуется создать еще один класс, который я назову для примера «MyLandmarks».

@interface MyLandmarks : NSObject <MKAnnotation>
   // Normally, there'd be some variables that contain the name and location.
   // And maybe some means to populate them from a URL or a database.
   // This example hard codes everything.

@end


@implementation MyLandmarks
-(NSString*)title {
    return @"'ere I am, J.H.";
}   

-(NSString*)subtitle {
    return @"The ghost in the machine.";
}

-(CLLocationCoordinate2D) coordinate {
    CLLocationCoordinate2D coord = {latitude: 19.120000, longitude: 73.020000}; 

    return coord; 
}
@end

Затем, где-нибудь в вашем MyMapView классе, добавьте:

MyLandmark *landmark = [[[MyLandmark alloc]init]autorelease];
[Obj_Map_View addAnnotation:landmark];

Пара других моментов, которые оценят другие разработчики Objective-C, работающие с вами:

  • Чтобы избежать путаницы, не называйте класс MyMapView, если он происходит от UIViewController. Назовите это MyMapViewController, вместо этого.
  • Классы начинаются с заглавной буквы, переменные начинаются со строчной буквы. Оба в верблюжьей клетке. Obj_Map_View должно быть objMapView.
0 голосов
/ 30 августа 2010

Для добавления аннотации используйте: addAnnotation:

читать об этом здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...