[解決済み] MKMapView ズームとリージョン
質問
Google MapsのJavascript APIを使い慣れました。最近、私はiPhoneプロジェクトのためにMapKitフレームワークを使用し始めましたが、私はズームと地図上の地域を設定することを理解するのに苦労しています。
Google Maps API では、8、9、10 のような整数のズーム レベルを、簡単な関数 setZoom() と共に使用していました。私が MapKit フレームワークで見ることができる唯一の同等のメソッドは、setRegion:animated です。私が理解したところでは、ズームレベルを指定するために、地域のスパンの緯度と経度の "delta" 値を設定する必要があるようです。しかし、私はこれらの値が何を表しているのか本当にわかりません(ドキュメントを読みました)。
MKMapView デリゲートを使用して、regionDidChange デリゲートメソッドでスパン値をトレースすると、結果は互いに相関していないように見えます。ズームアウトして、ドキュメントで指定されているようにスパン デルタ値が増加しているのを見ると、大丈夫です。しかし、突然、ズームせずにマップをドラッグすると、デルタ値が 0.0 になります。
どなたか、これらのスパンとデルタの基準点が何であるか説明していただけませんか。または、整数のズーム レベル (9 など) をこれらのデルタ値に変換するアルゴリズムはありますか?
ボーナス質問として、MKMapViewで最小-最大ズームレベルを指定する方法はありますか?)
ありがとうございます。
どのように解決するのですか?
まず最初に MKMapView はGoogle Mapsのようなあらかじめ定義されたズームレベルのセットを使用/持っていません。
その代わり、MKMapViewの表示領域は MKCoordinateRegion を使って記述します。
- 中央 (領域の中心点)、および
- スパン (中央付近の可視領域の大きさ)。
中心点は明白であるべきです(それはリージョンの中心点です)。
しかし、span(これは MKCoordinateSpan )で構成されています。
- 緯度デルタ (領域が表す垂直方向の距離)、および
- 経度δ (領域が表す水平方向の距離) を指定します。
簡単な例です。 これはおもちゃのMKCoordinateRegionです。
-
の中心です。
- 緯度: 0
- 経度: 0
-
スパンです。
- 緯度デルタ: 8
- 経度デルタ: 6
領域は、その最小値と最大値の座標を用いて、以下のように記述することができる。
-
min座標(左下点)。
- 緯度: -4
- 経度: -3
-
最大座標(右上の点)。
- 緯度 4
- 経度 3
したがって、適切なサイズの MKCoordinateSpan を使用して、中心点の周りのズーム レベルを指定することができます。 Googleの数値ズームレベルの近似値として、Googleが特定のズームレベルに使用するスパンのサイズをリバースエンジニアリングして、それに応じてスパンを作成することができます。 (Googleは、MKMapViewと同じ方法で、中心+スパンとしてビュー領域を記述しているので、Google Mapsからこれらの値を引き出すことができます)。
地域を制限するために、このデリゲートメソッドを使用することができます。
mapView:regionWillChangeAnimated
例えば、許容されたズームレベルに戻るように領域をリサイズすることによって。 (テーブル ビューで端を越えてスクロールできるようにする方法のようなものですが、その後、ゴムバンドで元の場所に戻ります)。 しかし、私はこの目的のためにそれを使用したことがないので、あなたのマイルセージは異なるかもしれません。
OS 3.1 では、3.0 で問題があった MapKit のアスペクトに対する明確な修正/改良があります。
関連
-
[解決済み] Cocoapodsの使用時にXcodeの警告を無視する
-
[解決済み] iOSの配布証明書の正しい更新方法
-
[解決済み] CGFloatとfloatを使うことの違いは何ですか?
-
[解決済み] iOS UITableViewのHeaderView(セクションヘッダーではない)を追加する
-
[解決済み] .xibファイルと.storyboardの違いは何ですか?
-
[解決済み] Mac OS Xのスタティック・ライブラリ(.a)のターゲット・アーキテクチャはどのように決定するのですか?
-
[解決済み] iPhoneシミュレーターでカメラをテストするには?
-
[解決済み] 円形のカスタムUIViewの描き方 - iPhoneアプリ
-
[解決済み] アプリを提出する前にitunesのリンクを取得する
-
[解決済み] iOS: HTTP POST リクエストを実行するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] UINavigationControllerに右ボタンを追加する方法は?
-
[解決済み] UIImage。リサイズ、そしてクロップ
-
[解決済み] UITextFieldのキーボードの種類をプログラムで変更する
-
[解決済み] iPhoneのシミュレータに.ipaファイルをインストールする方法は?
-
[解決済み] iPhoneのTableViewのCellの右側に小さな矢印を追加する
-
[解決済み] インスタンスからクラス名を取得する
-
[解決済み] drawRectを使うか使わないか(drawRect/Core Graphicsとsubview/imagesをいつ使うか、なぜ使うか)?
-
[解決済み] Objective-C用JSONパーサーの比較(JSON Framework、YAJL、TouchJSON、etc.)
-
[解決済み] UIImageViewのコーナー半径の設定がうまくいかない
-
[解決済み] UITableViewのセクションヘッダーのデフォルトの高さ