私はGoogleMapsAPI(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);