2

ちょっと難しい質問があります...Google マップの静的 API を使用して、マーカー付きの地図の画像を作成しています。私が苦労しているのは、表示したい 2 つのマーカーの位置を考慮して、適切なズーム レベルを計算することです。

私は緯度A、経度A、緯度B、経度B、および中心点(簡単)を持っています。ズームレベルを解く式を知っている人はいますか?

ありがとう!

4

2 に答える 2

4

レベル 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 はズーム レベルです。

于 2012-09-15T01:05:27.300 に答える
2

静的マップ 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));
于 2012-04-04T02:17:51.913 に答える