我想知道如何才能使这段代码工作:当我单击一个单元格时,我调用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谢谢
保罗
发布于 2011-08-01 21:27:47
- (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-01 21:29:47
由于您看到的是世界地图,因此地图视图的框架必须完好无损,设置区域的代码应该可以正常工作。
setRegion调用不起作用的最有可能的原因是mapView IBOutlet没有连接到xib中的映射视图控件。在IB中,右键单击文件的所有者并将mapView插座连接到地图视图控件。
您可能还希望将地图视图控件的delegate出口连接到文件的所有者,这样您(稍后)实现的任何委托方法都将被调用。
另外(与您的问题无关),在dealloc中,应该最后调用[super dealloc]。有关说明,请参阅this answer。
发布于 2011-08-01 19:56:19
在设置区域之前,需要设置框架,从外观上看,您正在使用IB实例化mapview,因此您可能应该将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.boundshttps://stackoverflow.com/questions/6897072
复制相似问题