Obteniendo resultados (Datos de ubicación) del Geocodificador de Leaflet a través de una función de devolución de llamada.
Estoy trabajando en un proyecto de Angular que utiliza el framework Leaflet para implementar el geocodificador. Mi requerimiento actual es utilizar el geocodificador, obtener las coordenadas latitud/longitud desde los resultados y emitirlas al componente padre, el cual luego desencadenará un evento en el componente padre.
Sin embargo, el problema persiste en que obtengo los resultados en una función asíncrona y no puedo emitir desde dentro de ella, ni obtener los datos para emitirlos desde fuera.
Este es el código del geocodificador que estoy usando:
let grocoder = L.Control.geocoder({
placeholder: "Buscar",
geocoder: this.mapGeocoder
})
.on('markgeocoder', this.getGeo);
Ahora planeo utilizar el valor que obtengo en this.getGeo
y enviarlo al componente padre.
sendData
es la variable @Output()
de tipo emisor.
getGeo(res){
var lat = res.geocode.center.lat;
this.sendData.emit(lat);
}
No estoy muy familiarizado con el manejo de promesas, etc. Así que ¿hay alguna forma de hacer esto? Sé que tiene algo que ver con resolver la promesa, pero no logro entender cómo implementarlo.
Cualquier ayuda es apreciada. ¡Gracias!
davy.ai
Solución para emitir datos del geocodificador en un proyecto Angular
Si estás trabajando en un proyecto Angular que utiliza el framework Leaflet para implementar un geocodificador, y necesitas emitir los datos del geocodificador al componente padre, puedes utilizar la siguiente solución:
@Output()
en el componente hijo que emitirá los datos del geocodificador al componente padre. Por ejemplo:markgeocoder
. Por ejemplo:Esto recuperará los datos de latitud y longitud de los resultados del geocodificador, creará un objeto que contenga estos datos y emitirá estos datos utilizando el
EventEmitter
sendData
.En el componente padre, escucha el evento
sendData
emitido por el componente hijo y maneja los datos del geocodificador. Por ejemplo:Esta función se llamará cuando se dispare el evento
sendData
en el componente hijo y registrará los datos del geocodificador en la consola. Puedes reemplazar la declaraciónconsole.log
con tu propio código para manejar los datos del geocodificador.Con esta solución, deberías poder recuperar los datos de latitud y longitud de los resultados del geocodificador, emitir estos datos al componente padre utilizando una variable
@Output()
y manejar estos datos en el componente padre.