11

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

2 に答える 2

21

これは、いわば答えではありませんが、Google Maps Javascript API v3グループのスレッドで発見した(少しハッキーな)回避策です。

//map.fitBounds(bounds);
setTimeout( function() { map.fitBounds( bounds ); }, 1 ); 
于 2010-10-06T15:07:18.617 に答える
0

上記の答えがうまくいかない場合(私にはうまくいきませんでした)、問題はブートストラップにある可能性があります(それを使用していると仮定します)。ブートストラップモーダルは、マップオブジェクトを埋め込むと、あらゆる種類の不安定な動作を具体的に生成します..そこに「アラート」をドロップすると、不思議なことにそれ自体を修正します..いずれにせよ、私は自分のモーダルを構築するだけですべての問題を解決しました(つまり、ブートストラップ モーダルを使用しない)。

于 2015-01-02T00:50:10.423 に答える