このコードは、 の指定された位置を中心にデフォルトのズーム レベルを設定しますviewDidLoad
。コードは以前のバージョンの iOS で正常に動作します。
CLLocationDistance visibleDistance = 100000; // 100 kilometers
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(location, visibleDistance, visibleDistance);
MKCoordinateRegion adjustedRegion = [mapView regionThatFits:region];
.
.
.
[mapView setRegion:adjustedRegion animated:NO];
ただし、緯度が ~ 75 (>75.1) を超える場所の iOS6 では、次のメッセージが表示されてアプリがクラッシュします。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'Invalid Region <center:nan, nan span:nan, nan>'
特定のズーム レベルでは、内部mapView
で適切な値を設定できないことがわかりました。は、すべての値を として返します。変数を直接使用すると、デフォルト マップ (全世界) が表示されるだけです。MKCoordinateRegion
[mapView regionThatFits:region]
nan
region
いくつかのテストの後、 を調整することでvisibleDistance
、コードが正しく機能することがわかりました。魔法の距離は 20 キロメートルをわずかに超えているようです (一連の緯度と latitudeDelta 値の場合、22 から 23 km の間のどこか)。これは北緯でのみ発生します (-80 で問題なく動作します)。
マップは、最初の配置後に任意の場所で機能します。Apple が可視マップ領域の初期化方法を変更したようです。回避策として、影響を受ける領域のズーム レベルを高くしています。それを適切に機能させる他の方法はありますか?