2016-07-30 13 views
2

ich ein Popup-Fenster wie diese außerhalb von Map-Container öffnen müssen: Popup over container and another div, always on top.Leaflet.js: Popup außerhalb Kartencontainer

Popup über Map-Container und ein anderes div, immer an der Spitze, ich ohne Erfolg eine z-index in .leaflet-popup-content-wrapper verwendet .

Ich verwendete auch L.marker([14, -45]).bindPopup(content,{autoPan:false}).addTo(map); aber immer Popup in Container.

Antwort

3

EDIT

Eine Abhilfe wäre, das „Pop-up“ selbst zu implementieren, so dass es auf die Karte Container Mutter statt innerhalb der Behälter Karte gehört.

Sie müßten die Marker Bewegungsverfolgung, aber mit Prospekt implementieren ist dies recht einfach:

  1. die map.latLngToContainerPoint()
  2. mit "move" Ereignis
  3. Abrufen der Markers aktuelle Position Karte verwenden
  4. Ihren Popup bewegen Sie mit L.DomUtil.setTransform() Methode zum Anwenden einer translate3d (hardwarebeschleunigte Übersetzung).
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); 
} 

Demo: https://jsfiddle.net/3v7hd2vx/54/

Dann sind Sie mit Öffnung nach links und das Popup zu schließen.


Ursprüngliche Antwort

Die L.Popup innerhalb der Kartenelemente hinzugefügt. Daher kann es standardmäßig nicht außerhalb des Kartencontainers erweitert werden.

Sie können jedoch versuchen, es "extrahieren" (popup.getElement() in Leaflet 1.0) durch Abrufen der zugeordneten HTML-Elemente und Anhängen an einen externen übergeordneten DOM-Knoten, so dass Sie nicht mehr an den Kartencontainer gebunden sind.

+0

Dies ist genau das, was ich versucht habe ... Aber war keine gute Antwort, da ein "geklontes" Element möglich ist, aber es ist nicht gut Positionierung + nicht an die Karte gebunden. Ich denke, die beste Antwort ist: Es ist leider nicht möglich. :(+1 für @Gyybs –

+0

Es scheint aber eine Lösung, funktioniert immer noch nicht. – BryGom

+0

Ein Workaround hinzugefügt. – ghybs