2

我想知道如何使这段代码工作:当我单击一个单元格时,我调用 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

谢谢

保罗

4

3 回答 3

8
- (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];

}

于 2011-08-01T13:27:46.717 回答
2

由于您看到的是世界地图,因此地图视图的框架必须没问题,并且设置区域的代码应该可以工作。

setRegion调用不起作用的最可能原因是mapViewIBOutlet 未连接到 xib 中的地图视图控件。在 IB 中,右键单击 File's Owner 并将mapView出口连接到地图视图控件。

您可能还希望将地图视图控件的delegate出口连接到文件的所有者,以便您实现(稍后)的任何委托方法都将被调用。

单独(并且与您的问题无关)dealloc应该[super dealloc]最后调用 in 。请参阅此答案以获取解释。

于 2011-08-01T13:29:46.987 回答
1

在设置区域之前需要设置框架,从外观上看,您正在使用 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
于 2011-08-01T11:56:18.557 回答