2012-04-04 12 views
2

私は厄介な質問があります...私はそれにマーカーが付いているマップのイメージを作成するためにgoogle maps静的APIを使用しています。私がやりたいことは、表示したい2つのマーカーの位置を考慮して、適切なズームレベルを計算することです。適切なgoogleマップを計算する方法

私はlatitudeA、longitudeA、latitudeB、longitudeBと中心点(簡単)を持っています。誰もズームレベルを解決するための数式を知っていますか?

ありがとうございます!あなたはスタティックマップAPIを使用しているにもかかわらず

答えて

2

、あなたはまだ、通常のマップスクリプトファイルを参照して、バウンディングボックスの計算を行うことができます。

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)); 
+0

技術的に私は地図apiを使用していません。私がしようとしているのは、地図画像を電子メールに埋め込むことだけです。 GMap呼び出しを使わずにこれを(数学的に)行う方法はありませんか? – TomBomb

+0

これを計算するには、どんな種類のプログラミング言語を使っていますか、あるいはどこかからリンクをコピー/ペーストしようとしていますか? – javram

+0

技術的にはこれはPHPですが、私は適切な静的なGoogleマップのリンクを取得しようとしています: "http://maps.googleapis.com/maps/api/staticmap?center=centerLat,centerLng&zoom=zoomLevel&size=widthxheight&maptype =ロードマップ&マーカー=色:緑%7Clabel:P%7CLat1、Long1&マーカー=色:赤%7Clabel:D%7CLat2、Long2&sensor = false "; – TomBomb

3

私はレベル11、12で3つのスタティックマップを取り、 13、そして対応する最小/最大緯度/経度マークでシフトキーを押しながらGoogle Mapsの "Maps Labs"機能を使用しました。次に、緯度/経度の範囲、期待値(データを検査して予測した公式で)、デルタ(すなわちabs(期待範囲))をゼロに近づけるPerlプログラムを作成しました。 私は私ができる限り近くを得ていたことを自分自身を納得させたところで、ここに私の結果だった:

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、ExpLonが期待される緯度ある

ExpLat = 0.162 * (2 ** (12 - Z)) 
ExpLon = 0.220 * (2 ** (12 - Z)) 

および経度の範囲であり、Zはズームレベルである。

+0

良い答えgolux。 –

関連する問題