getBounds()
Google Maps v3 API は、google.maps.Polygon クラスのメソッドをネイティブにサポートしていません。fitBounds()
これは、google.maps.Map クラスにメソッドがあり、まさに探しているものであるという事実を考えると、奇妙に思えます。Google Maps API を何らかの頻度で使用する場合、これはトリックのバッグに入っているはずです。 ::
getBounds()
google.maps.Polygon クラスのメソッド
google.maps.Polygon.prototype.getBounds = function() {
var bounds = new google.maps.LatLngBounds();
var paths = this.getPaths();
var path;
for (var i = 0; i < paths.getLength(); i++) {
path = paths.getAt(i);
for (var ii = 0; ii < path.getLength(); ii++) {
bounds.extend(path.getAt(ii));
}
}
return bounds;
}
この方法を手元に置くと、マップ上のポリゴンを中心に配置して合わせることが非常に簡単になります。
注 : よく知らない場合でも問題ありませんがgetAt()
、getLength()
これらは google.maps.MVCArray クラスに固有のメソッドです。ポリゴンのメソッドを呼び出すと、getPaths()
LatLng の配列が変更可能な LatLng の MVCArray として返されます。ここで MVCArray について準備できます - Google マップ v3 API MVCArray クラス。
先に進みます。これがフレームワークです。この次のコードの前に、上記のプロトタイプ メソッドをどこかに実装する必要があります。
var map = new google.maps.Map(container, opts); // I'll spare the details on this
var coords = [
new google.maps.LatLng(25.774252, -80.190262)
,new google.maps.LatLng(18.466465, -66.118292)
,new google.maps.LatLng(32.321384, -64.75737)
,new google.maps.LatLng(25.774252, -80.190262)
];
var myPolygon = new google.maps.Polygon({
paths: coords
,strokeColor: "#A80000"
,strokeOpacity: 0.8
,strokeWeight: 1
,fillColor: "#0b2a32"
,fillOpacity: 0.12
});
ステージ セットがあれば、この (または任意の) ポリゴンを中心にしてズームするために必要なことは、次のとおりです::
map.fitBounds(myPolygon.getBounds());
短くて甘い。それが役立つことを願っています。
-ケビン・ジェームズ