Google Maps API v3.0でmap.fitbounds()を複数回呼び出す
-
28-09-2019 - |
質問
Google Maps API(v3.0)を使用し始めたばかりで、これまでに大成功を収めています。データベースから緯度と経度の値を持つオブジェクトのセットをロードし、スクリプトに渡し、マップに追加するためにスクリプトにループしています。
私はそれを使っていますbounds.extend()
/ map.fitBounds()
「マップのズームと境界を設定する方法(以下のコードを参照)。これは、最初に予想されるように機能します。ただし、既存のマーカーをクリアし、別のオブジェクトセットを取得し、同じことを行う 同じマップインスタンスで, 、それは範囲を誤って設定し、通常は最小ズーム(宇宙飛行士の見解)になります。
私の疑いは、私のマップオブジェクトには、私がそれを与えた以前の一連の境界のメモリがあり、新しい境界を割り当てる前にこれらの境界をクリアする方法を見つける必要があるということですが、私は本当に確信が持てません。
どんな助けも大歓迎です!
var locationList = [];
for (var i = 0; i < mapPoints.length; i++) { // mapPoints is a collection of DTOs
var mapPoint = mapPoints[i];
var location = new google.maps.LatLng(mapPoint.Latitude, mapPoint.Longitude);
locationList.push(location);
var marker = new google.maps.Marker({
map: map,
icon: '/Content/images/map/' + mapPoint.Status.Icon,
shadow: '/Content/images/map/shadow.png',
position: location
});
markers.push(marker); // markers is an Array that is managed outside this loop
}
var bounds = new google.maps.LatLngBounds();
for (var j = 0; j < locationList.length; j++)
bounds.extend(locationList[j]);
map.fitBounds(bounds);
解決
これはいわば答えではなく、私が発見した(わずかにハッキーな)回避策です スレッド Googleマップでは、JavaScript API V3グループ:
//map.fitBounds(bounds);
setTimeout( function() { map.fitBounds( bounds ); }, 1 );
他のヒント
上記の答えがあなたのために機能しない場合(私にとってはそうではありませんでした)、問題はブートストラップにあるかもしれません(あなたがそれを使用していると仮定して)。ブートストラップモーダルは、マップオブジェクトを埋め込んだときにあらゆる種類の不安定な動作を具体的に生成します。 (つまり、ブートストラップモーダルを使用していません)。
所属していません StackOverflow