私は、画面を塗りつぶすマップと、画面の下部に表示される非マップコンテンツの水平オーバーレイを持っています。地図ビュー内でできるだけ大きくなるように地図上にポリラインを表示したいが、はオーバーレイされたコンテンツの下に隠されていない。以下はリーフレットマップでLatLngBoundsをオフセットする
は、私はそれに近い作品しようとしていますものですが、マップの現在のビューのズーム/位置に応じて、異なる結果が得られます。私はマップの現在のビューから独立したものが必要です。
// `map` is the leaflet map
// `polyline` is a leaflet polyline
function fitBounds (latLngBounds, offsetY) { // offsetY in pixels
var zoom, southeast, southeastOffset, newBounds;
if (offsetY) {
zoom = map.getBoundsZoom(latLngBounds);
southeast = map.project(latLngBounds.getSouthEast(), zoom);
southeastOffset = new L.Point(southeast.x, southeast.y + offsetY);
newBounds = latLngBounds.extend(map.unproject(southeastOffset, zoom));
}
map.fitBounds(newBounds || latLngBounds);
}
var contentHeight = 350;
// this will be calculated and is the distance from the top of the
// overlaid content to the bottom of the map
fitBounds(polyline.getBounds(), contentHeight);
map.getBoundsZoom(latLngBounds)
とproject
/unproject
は、マップをパンしたり、異なるズームされたときに異なる値を返すように見えます。私はdocsから、現在のマップビューから独立していると理解しました。
私は間違った方法を使用していますか、または私が必要とするものを達成するための別の戦略がありますか?ありがとう。
[リーフレットプラグインリスト](http://leafletjs.com/plugins#events)の 'leaflet-active-area'プラグインと' Leaflet.ControlledBounds'プラグインを参照して、彼らは 'fitBounds () 'と非常によく似ています。 – IvanSanchez
ありがとうIvanSanchez。私は正常に問題に取り組んで 'リーフレット - アクティブエリア'を得ているので、私の問題を解決します。誰もがそれを見て、コメントしたいと思えば、なぜ元のコードがうまくいかなかったのか、私はまだ興味があります。 – Premasagar