ちょっと難しい質問があります...Google マップの静的 API を使用して、マーカー付きの地図の画像を作成しています。私が苦労しているのは、表示したい 2 つのマーカーの位置を考慮して、適切なズーム レベルを計算することです。
私は緯度A、経度A、緯度B、経度B、および中心点(簡単)を持っています。ズームレベルを解く式を知っている人はいますか?
ありがとう!
ちょっと難しい質問があります...Google マップの静的 API を使用して、マーカー付きの地図の画像を作成しています。私が苦労しているのは、表示したい 2 つのマーカーの位置を考慮して、適切なズーム レベルを計算することです。
私は緯度A、経度A、緯度B、経度B、および中心点(簡単)を持っています。ズームレベルを解く式を知っている人はいますか?
ありがとう!
レベル 11、12、13 で 3 つの静的マップを作成し、対応する最小/最大緯度/経度マークでシフト キーを押しながら、Google マップの「マップ ラボ」機能を使用しました。次に、Perl プログラムを作成して、緯度/経度の範囲、期待値 (データを調べて予測した式を使用)、およびゼロに近いはずのデルタ (abs(expected - range)) を計算しました。できる限り近づいたと確信した後、次の結果が得られました。
Z11: LatRange[0.323999] ExpLat[ 0.324] DeltaLat[ 0.0000000000000019]
Z11: LonRange[0.439999] ExpLon[ 0.44] DeltaLon[ 0.0000000000000023]
Z12: LatRange[0.161999] ExpLat[ 0.162] DeltaLat[ 0.0000000000000010]
Z12: LonRange[0.219999] ExpLon[ 0.22] DeltaLon[ 0.0000000000000011]
Z13: LatRange[0.081000] ExpLat[ 0.081] DeltaLat[ 0.0000000000000031]
Z13: LonRange[0.109999] ExpLon[ 0.11] DeltaLon[ 0.0000000000000006]
そして、私が使用した式は次のとおりです。
ExpLat = 0.162 * (2 ** (12 - Z))
ExpLon = 0.220 * (2 ** (12 - Z))
ExpLat、ExpLon は予想される緯度と経度の範囲、Z はズーム レベルです。
静的マップ API を使用している場合でも、通常のマップ スクリプト ファイルを参照して、バウンディング ボックスの計算を行うことができます。
map = new GMap2(document.getElementById("map"));
// Define the two corners of the bounding box
var sw = new GLatLng(59.0, 13.12); //any lat,lng pair
var ne = new GLatLng(60.35, 16.90);
var bounds = new GLatLngBounds(sw, ne);
var zoom = map.getBoundsZoomLevel(bounds));