52 votos

Cómo mostrar una ventana emergente en el mouse por encima, no haga clic en?

Es posible que en el Prospecto que emergente se abre en el mouse por encima, no haga clic en?

Este es trabajo para un solo marcador en un momento, pero la necesito para un mayor número de marcadores:

marker.on('mouseover', function(e){
    marker.openPopup();
});

63voto

Wonko Puntos 1248

Si usted necesita para mostrar una ventana emergente marcador puede utilizar marcadores de bindPopup método.

A continuación, usted tiene más control y automáticamente quedará vinculado a su marcador.

En el siguiente ejemplo se puede mostrar el marcador cuando el ratón se mueve por encima, y ocultarla cuando el ratón se mueve fuera:

        marker.bindPopup("Popup content");
        marker.on('mouseover', function (e) {
            this.openPopup();
        });
        marker.on('mouseout', function (e) {
            this.closePopup();
        });

Nota: puede ejecutar en cuestión que la ventana emergente se cierra cuando se mueve el ratón en la ventana emergente sí misma, así que usted puede ser que necesite para ajustar emergente de anclaje en el icono de marcador de propiedad local mostrar un poco lejos de marcador de sí misma, de manera emergente no desaparece con demasiada facilidad.

13voto

Sujeesh Balan Puntos 191

Esto le ayuda a mostrar popup en el marcador mouseover

marker.on('mouseover', function(e) {
  //open popup;
  var popup = L.popup()
   .setLatLng(e.latlng) 
   .setContent('Popup')
   .openOn(map);
});

6voto

Mark Puntos 21

Esto no es un Folleto con un problema específico, sino más bien una cuestión de Javascript.

Guardar sus marcadores en una colección y, a continuación, enlazar openPopup a 'mouseover' evento para todos ellos.

Por ejemplo, con una matriz:

var markers = getAllMarkers(); // up to you to implement, say it returns an Array<L.Marker>

for (var i = 0; i < markers.length; i++) {
    var currentMarker = markers[i];
    currentMarker.on('mouseover', currentMarker.openPopup.bind(currentMarker));
}

5voto

Christian P. Puntos 2268

En términos de tener una solución que funciona "para un mayor número de marcadores", esto es lo que tengo que hacer para cada capa de datos del punto de carga de GeoJSON:

var layerPopup;
featureLayer.on('mouseover', function(e){
    var coordinates = e.layer.feature.geometry.coordinates;
    var swapped_coordinates = [coordinates[1], coordinates[0]];  //Swap Lat and Lng
    if (map) {
       layerPopup = L.popup()
           .setLatLng(swapped_coordinates)
           .setContent('Popup for feature #'+e.layer.feature.properties.id)
            .openOn(map);
    }
});
featureLayer.on('mouseout', function (e) {
    if (layerPopup && map) {
        map.closePopup(layerPopup);
        layerPopup = null;
    }
});

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X