私はそれにポイントの束を持ったマップを持っており、すべてのポイントが画面に収まるようにズームしたいです。このコードはかなり簡単です:GoogleマップAPIでGLatLngBounds(四角形)を10%増やすにはどうすればよいですか?
var bounds = new GLatLngBounds();
for (var n = 0; n < points.length; n++) {
bounds.extend(points[n].getLatLng());
}
zoomLevel = map.getBoundsZoomLevel(bounds);
ズームレベルを取得するには、境界オブジェクトを渡す必要があります。境界オブジェクトを作成するには、四角形のような2つの点を指定するか、またはその点を渡します。必要な場合は、上のようにポイントを組み込みます。
問題は、ポイントが画面の端に正しく表示されることです。境界のサイズを10%増やしたいと思います。私はbounds.getNorthEast();
とbounds.getSouthWest();
を使って2つのポイントをオブジェクトから外に出すことができますが、境界のサイズの10%を増やすのは面倒です。私はtoSpan()
を境界線のサイズを含むLatLngを与え、次にLatとLngの10%を与えて私の座標に加えました。しかし、それは動作していないようです。この試みのコードは、
var pointNorthEast = bounds.getNorthEast();
var pointSouthWest = bounds.getSouthWest();
var latAdjustment = ((pointNorthEast.lat() - pointSouthWest.lat()) * increasePercentage)/2;
var lngAdjustment = ((pointNorthEast.lng() - pointSouthWest.lng()) * increasePercentage)/2;
var newPointNorthEast = new GLatLng(pointNorthEast.lat() + latAdjustment, pointNorthEast.lng() + lngAdjustment);
var newPointSouthWest = new GLatLng(pointSouthWest.lat() - latAdjustment, pointSouthWest.lng() - lngAdjustment);
bounds = new GLatLngBounds();
bounds.extend(newPointNorthEast);
bounds.extend(newPointSouthWest);
私の計算では、境界は10%大きくなるはずです。私はそれがちょうど長方形を表しているかどうか、または座標データを保存しているかどうか確信していないので、私はそれを中央に保つために各側の増加の半分を加算/減算するチャンスを取らなかった。
しかし、1.1や1.5などのさまざまなincreasePercentage値を試しても、違いはありません。
したがって、私は自分の論理、私の数学、またはzoomLevelが滑らかなスケールではないという事実が、私の試みを妨害しているかのいずれかを起こしました。
私はちょうどzoomLevel -= 1
をしなければならないかもしれないと思うし、それをやったが、誰かが最初にアイデアを持っていたかどうかを見たいと思った。
この上の任意の更新を? –
3年前のこと、私は昨晩の夕食に何があったのか覚えていません... – NibblyPig
それは私が思ったものですが、 –