4

リーフレット js を使用して、cloudmade タイルを使用して世界地図を表示しています。マップにsetMaxBounds移動すると、境界は北を除いてうまく機能します。しかし、それは私の最大の関心事ではありません。私の懸念は、私が使用maxBoundsしているため、どの画面サイズでもズームアウトして全世界を見ることができないことです。

私が使用したバウンドは、カナダの北東の隅からオーストラリアの南西までずっと届きます。パンして境界に到達することはできますが、ズームアウトしてマップ全体を表示することはできません。minZoom私は 0に設定しましたmaxBound。 がなければ、ズームアウトしすぎて、大画面で世界が 3 回繰り返されるのを見ることができます。

map = L.map('canvas',{zoomControl: false}).setView([38.82259, -2.8125], 0);
map.setMaxBounds([[84.67351256610522, -174.0234375], [-58.995311187950925, 223.2421875]]);

どんな助けでも感謝します。アニル

4

1 に答える 1

7

私が正しく理解している場合、あなたの問題は、ビューで世界全体を表示できるようにしたいが、ユーザーがラップされたタイルを表示できないようにしたいということです。

まず、Leaflet は、ユーザーが指示したことを正確に実行します。あなたのコードで作成したこの JSFiddle をチェックしてください。http://jsfiddle.net/zF6bf/ ズームアウトして世界全体を表示できますが、maxBounds ルールに違反することなく、結果ペインのサイズを変更して世界全体を表示するのに十分な大きさにする必要があります。これは私には正しい動作のようです。

第 2 に、ワールドをラップしたくない場合は、レイヤーを作成するときにnoWrapオプションをに設定することもできます。true

var osmLayer = new L.TileLayer("http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", { noWrap: true}).addTo(map);

これにより、そのレイヤーがマップを包み込むのを防ぎます。このラッピングが最初に境界を作成した原因である場合、おそらくラッピングを削除すると、 を設定する必要がなくなりますmaxBounds。その後、マップを自由にパンおよびズームできるようになります。

于 2013-05-15T14:04:54.460 に答える