2013-04-18 68 views
0

我正在使用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模擬器。

+0

你在用什麼語言?在任何地方都沒有逗號或分號。我看起來很奇怪。 – Craig

+0

對不起,它是objective-c,其他輸出是由xld中的lldb調試器輸出的結構。 – tassinari

+0

啊,我錯過了它是輸出,並認爲這是你設置美國的輸入。 – Craig

回答

0

我認爲這只是一個lldv錯誤或lldb使用中的錯誤。如果我NSLog經緯度一切都很好。