0

幅より高さが長いマップがあります。場合によっては、すべてのマーカーを表示するために fitBounds メソッドがズームと中心を正しく調整できないことに気付きました。

この例で問題を切り分けることができました。

http://jsbin.com/welcome/2568

この例では、最初に 23 の位置をロードしようとしましたが、かなりズームされていることに気付くでしょう。私がやっていることは次のとおりです。

//extending 23 positions doesn't really work
bounds = new google.maps.LatLngBounds ();
for (var i = 0; i < markerList.length; i++) {
    pos = new google.maps.LatLng (markerList[i]["Za"],markerList[i]["$a"])
    bounds.extend(pos);
}
window.map.fitBounds(bounds);

5 秒後、その基本的なスクリプトを再度実行しますが、今回は 23 を拡張する代わりに、境界を 5 回だけ拡張します。今度はマップが実際に縮小されます。

私が気付いたのは、この問題を再現するには、キャンバス div の幅と高さを設定する必要があることです。

<div id="map_canvas" style="width:450px;height:600px;"></div>

だから私の質問は次のとおりだと思います:マップキャンバスサイズを設定し、25以上の位置にfitBounds()を正常に設定するにはどうすればよいですか?

4

1 に答える 1

0

何が起こっているのか、マップ構成で minZoom を設定していたことがわかりました。

minZoom が fitBounds() ですべての位置を表示するために必要な値よりも低い場合、暗黙のうちに失敗するようです。

マップの幅が影響する理由は、マップが薄いほど、位置のセット全体を表示するためにズームアウトする必要があり、minZoom の制約を満たすと、マップが停止するためです。

5 つの位置のサブセットが機能する理由は、それが minZoom に達していないからだと思います。

この問題を解決するために、minZoom 設定を削除しました。

于 2012-07-23T22:40:10.073 に答える