我正在使用MKMapKit并将该区域设置为完整尺寸的美国,并且它正在按预期显示。但是在检查self.mapView.region
属性时,我得到了一些奇怪的结果,这些结果会影响我以后在程序中的计算。
以下是我如何设置地图视图:
- (void)viewDidLoad
{
[super viewDidLoad];
MKCoordinateRegion usa = MKCoordinateRegionMake(CLLocationCoordinate2DMake(39.4, -91.5), MKCoordinateSpanMake(40, 40));
self.mapView = [[MKMapView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:self.mapView];
self.mapView.region = usa;
self.mapView.delegate = self;
self.mapView.showsUserLocation = YES;
[self.mapView.userLocation addObserver:self forKeyPath:@"location" options:0 context:nil];
}
这是美国MKCoordinateRegion
,看起来很好并且有效:
(lldb) p usa
(MKCoordinateRegion) $0 = {
(CLLocationCoordinate2D) center = {
(CLLocationDegrees) latitude = 39.4
(CLLocationDegrees) longitude = -91.5
}
(MKCoordinateSpan) span = {
(CLLocationDegrees) latitudeDelta = 40
(CLLocationDegrees) longitudeDelta = 40
}
}
然后我设置区域self.mapView.region = usa;
并在其后面断开,现在是self.mapView.region
的输出。
(lldb) p [self.mapView region]
(MKCoordinateRegion) $1 = {
(CLLocationCoordinate2D) center = {
(CLLocationDegrees) latitude = 39.4
(CLLocationDegrees) longitude = 39.4
(CLLocationDegrees) latitudeDelta = 39.4
(CLLocationDegrees) longitudeDelta = -91.5
}
(MKCoordinateSpan) span = {
(CLLocationDegrees) latitude = 66.4999527377778
(CLLocationDegrees) longitude = 66.4999527377778
(CLLocationDegrees) latitudeDelta = 66.4999527377778
(CLLocationDegrees) longitudeDelta = 67.4999957172512
}
(CLLocationCoordinate2D) center = {}
}
所以问题是中心结构是错误的,经度是关闭的,CLLocationCoordinate2D
甚至不应该有delta字段,它看起来像MKCoordinateSpan
。
CLLocationCoordinate2D定义:
typedef struct {
CLLocationDegrees latitude;
CLLocationDegrees longitude;
} CLLocationCoordinate2D;
所以我知道哪里出错了?我错过了一些非常明显的东西吗?如果这是错误的方法,我怎样才能获得真正的数据以便稍后在应用程序中进行一些计算?
使用xcode 4.6.1和iOS 6.1模拟器。
答案 0 :(得分:0)
我认为这只是lldv错误或我的lldb使用中的错误。如果我NSLog lat / lon一切都很好。