Tengo un objeto marcador que tiene una altura y una anchura determinadas, y aunque apunta a una sola coordenada, la representación visual del marcador abarca muchos píxeles. Cuando hago clic en la representación visual del marcador, me gustaría obtener las coordenadas subyacentes del mapa, pero en su lugar sólo tengo acceso a la única coordenada lat/lng asociada al marcador.
Respuestas
¿Demasiados anuncios?Por un lado: cada vez que Leaflet gestiona un evento de ratón (o táctil), puede acceder al evento DOM original en el archivo originalEvent
del evento.
Por otro lado: Dado un evento DOM de ratón (o táctil), Leaflet puede traducir mágicamente su clientX
y clientY
en una instancia de L.LatLng
utilizando map.mouseEventToLatLng()
.
Combina estas dos cosas, y puedes tener algo como:
marker.on('click', function(ev){
var latlng = map.mouseEventToLatLng(ev.originalEvent);
console.log(latlng.lat + ', ' + latlng.lng);
});
Consulte la documentación de Leaflet para conocer los demás métodos de conversión, ya que pueden resultarle útiles.
Siempre puede recuperar las coordenadas desde el mapa de objetos de Leaflet. Puede utilizar algo como esto:
map.on('click', function(e){
var coord = e.latlng;
var lat = coord.lat;
var lng = coord.lng;
console.log("You clicked the map at latitude: " + lat + " and longitude: " + lng);
});
Aquí tienes un ejemplo de trabajo.