MKMapView:setRegionが機能しません!
-
07-07-2019 - |
質問
Aaaarg ... OK、落ち着いてみましょう。
MKMapViewの領域の設定に問題がありましたか? うまくいきませんでした。
このコード:
-(void)setUserCenteredSpan:(MKCoordinateSpan)span{ // for this example, span = {0.5, 0.5}
// Current region (just initialised)
NSLog(@"%f, %f - %f, %f", self.region.center.latitude,
self.region.center.longitude,
self.region.span.latitudeDelta,
self.region.span.longitudeDelta);
// New Region
MKCoordinateRegion region = MKCoordinateRegionMake([[[self userLocation] location] coordinate],
span);
NSLog(@"%f, %f - %f, %f", region.center.latitude,
region.center.longitude,
region.span.latitudeDelta,
region.span.longitudeDelta);
// Region saved in MKMapView
[self setRegion:region animated:NO];
NSLog(@"%f, %f - %f, %f", self.region.center.latitude,
self.region.center.longitude,
self.region.span.latitudeDelta,
self.region.span.longitudeDelta);
}
そのログを返します:
30.145127, -40.078125 - 0.000000, 0.000000
0.000000, 0.000000 - 0.500000, 0.500000
0.000000, 0.000000 - 0.000000, 0.000000
理由を知っていますか??!
どうもありがとう、X(
マート
編集:もちろん、インターネットに接続されたデバイスを使用しています。
解決
以前のログを正確に理解していませんが、エラーがどこにあったかはわかります。
インスタンス化されたMKMapViewはフレームで初期化されたのではなく、&res;に設定されたautoresizingMaskで初期化されました。 0。
setRegionメソッドが呼び出されたとき、ビューはまだフレーム化されていません。リージョンの値はビューフレームに従って計算されるため、これらの値は見つかりませんでした。
setRegionを実行する前にフレームを設定するだけで、正常に表示されます。
バイ!
他のヒント
最初のログは self.region.center.latitude
を使用しますが、 MKCoordinateRegionMake
への呼び出しのどこにも表示されません。このログは、リージョンを設定するために使用しているものは何でも、lat / longが0/0であることを示しています...
自動サイズ変更マスクの設定は私を助けてくれました。
[_mapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
所属していません StackOverflow