2016-07-30 5 views
2

マップコンテナ外ポップアップ:マップ・コンテナと別のdivを超えるポップアップは、常に上に、私は成功せず.leaflet-popup-content-wrapperz-indexを使用Popup over container and another div, always on top.Leaflet.js:私はこのようなマップ・コンテナの外にポップアップウィンドウを開く必要

私も使用L.marker([14, -45]).bindPopup(content,{autoPan:false}).addTo(map);しかし、常にコンテナの中にポップアップを表示します。

答えて

3

EDIT

回避策は、それが地図コンテナではなく内部のマップ・コンテナに属しているように、「ポップアップ」自分で実装することです。

あなたは、マーカーの動きのトラッキングを実装する必要があるだろうが、リーフレットで、これはかなり簡単です:

  1. 使用して、あなたのポップアップを移動map.latLngToContainerPoint()
  2. を使用して、マーカーの現在位置を取得
  3. マップの"move"イベントを使用L.DomUtil.setTransform()translate3d(ハードウェア加速翻訳)を適用する方法。
map.on("move", function() { 
    movePopup(); 
}); 

function movePopup() { 
    var mapContainerRelativePos = map.latLngToContainerPoint(mymarker.getLatLng()), 
    x = mapContainerPos.left + mapContainerRelativePos.x, 
    y = mapContainerPos.top + mapContainerRelativePos.y; 

    L.DomUtil.setTransform(mypopup, {x: x, y: y}, 1); 
} 

デモ:https://jsfiddle.net/3v7hd2vx/54/

が次にあなたが開くとポップアップを閉じたままになっています。


オリジナル答え

L.Popupは、地図要素の中に追加されます。したがって、デフォルトではマップコンテナの外側には拡張できません。

ただし、関連するHTML要素を取得して外部DOM親ノードに追加することで、マップコンテナにバインドされなくなるため、リーフレット1.0では「抽出」(popup.getElement())することができます。

+0

これはまさに私が試みたものです...しかし、 "クローン化"要素が達成できるので良い答えではありませんでしたが、ポジショニングは良くない+マップに限定されていません。私は最高の答えは次のようなものだと思います。それは悲しいことではありません。 :(+1の@ghybsのために+1 –

+0

それはまだ解決しないようですが、まだ動作しません。 – BryGom

+0

回避策を追加しました – ghybs

関連する問題