как начать с "моих" координат из MKCoordinateRegion? - PullRequest
2 голосов
/ 01 августа 2011

Мне интересно, как я могу заставить этот код работать: когда я нажимаю на ячейку, я вызываю DetailViewController, который является картой с координатами Сан-Франциско.Но моя карта показывает только карту "мира" и не идет в регион, который я настроил. Знаете ли вы, как я мог бы начать с "моими" координатами?

Вот мой код:

#import "DetailViewController.h"

@implementation DetailViewController

@synthesize mapView;

- (void) gotoLocation {
    NSLog(@"allo");

    //start off in San Francisco
    MKCoordinateRegion region;
    region.center.latitude = 37.786996;
    region.center.longitude = -122.440100;
    region.span.latitudeDelta = 0.112872;
    region.span.longitudeDelta = 0.109863;

    [self.mapView setRegion:region animated:YES];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self gotoLocation];
}

- (void)dealloc {
    [super dealloc];
    [mapView release];
}

- (void)viewDidUnload {
    [super viewDidUnload];
    self.mapView = nil;
}

@end

Спасибо

Пол

Ответы [ 3 ]

7 голосов
/ 01 августа 2011
- (void)viewDidLoad{
[super viewDidLoad];

// define span for map: how much area will be shown
MKCoordinateSpan span;
span.latitudeDelta = 0.002;
span.longitudeDelta = 0.002;

// define starting point for map
CLLocationCoordinate2D start;
start.latitude = 37.786996;
start.longitude = 0.109863;

// create region, consisting of span and location
MKCoordinateRegion region;
region.span = span;
region.center = start;

// move the map to our location
[self.mapView setRegion:region animated:YES];

}

2 голосов
/ 01 августа 2011

Поскольку вы видите карту мира, рамка просмотра карты должна быть в порядке, и этот код для установки региона должен работать.

Наиболее вероятная причина, по которой вызов setRegion не работает, заключается в том, что mapView IBOutlet не подключен к элементу управления представлением карты в xib.В IB щелкните правой кнопкой мыши на Владельце файла и подключите выход mapView к элементу управления представлением карты.

Вы также можете подключить выход delegate элемента управления представлением карты к Владельцу файла, а также любому делегату.методы, которые вы реализуете (позже), будут вызываться.

Отдельно (и не связано с вашей проблемой), в dealloc, [super dealloc] следует вызывать последним.См. этот ответ для объяснения.

1 голос
/ 01 августа 2011

Ваш кадр должен быть установлен до того, как вы сможете установить регион, судя по всему, вы используете IB для создания экземпляра карты, поэтому вам, вероятно, следует поместить сообщение setRegion в viewDidAppear: и поместить его в ваш DetailViewController.

-(void)viewDidAppear {
    MKCoordinateRegion region;
    region.center.latitude = 37.786996;
    region.center.longitude = -122.440100;
    region.span.latitudeDelta = 0.112872;
    region.span.longitudeDelta = 0.109863;
    [self.mapView setRegion:region animated:YES];
}

или

Вы можете просто сделать что-то подобное, прежде чем установить регион (может не работать)

self.mapView.frame = self.view.bounds
...