我正在使用MKMapKit並將區域設置爲全尺寸美國,並且按預期顯示。但是,在檢查self.mapView.region
屬性時,我收到了一些奇怪的結果,這些結果稍後影響到我的計算。MKMapView區域屬性返回壞結構
下面是我如何設置地圖視圖:
- (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
甚至不應該有增量領域,它看起來像一個MKCoordinateSpan
。
CLLocationCoordinate2D定義:
typedef struct { CLLocationDegrees latitude; CLLocationDegrees longitude; } CLLocationCoordinate2D;
所以任何想法,我要去哪裏錯了嗎?我錯過了一些非常明顯的東西嗎?如果這是做錯的方法,我怎麼才能得到真實的數據在應用程序中稍後進行一些計算?
使用xcode 4.6.1和iOS 6.1模擬器。
你在用什麼語言?在任何地方都沒有逗號或分號。我看起來很奇怪。 – Craig
對不起,它是objective-c,其他輸出是由xld中的lldb調試器輸出的結構。 – tassinari
啊,我錯過了它是輸出,並認爲這是你設置美國的輸入。 – Craig