Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

142
Views
Obtención de resultados (datos de ubicación) del folleto Geocoder a través de la función de devolución de llamada

Estoy trabajando en un proyecto angular que usa un marco de folleto para implementar un geocodificador. Mi requisito actual es usar geocodificador, recuperar el lat, lng de los resultados y emitirlos al componente principal que luego desencadenaría un evento en el componente principal.

Pero el problema sigue siendo que obtengo los resultados en una función asíncrona y no puedo emitir desde dentro, ni sacar los datos del exterior para emitirlos.

Este es el código de geocodificador que estoy usando:

 let grocoder = L.Control.geocoder({ placeholder:"Search", geocoder: this.mapGeocoder }) .on('markgeocoder', this.getGeo);

Ahora planeo usar el valor que obtengo en this.getGeo y enviarlo al componente principal. FYI sendData es la variable @output() de tipo emitter.

 getGeo(res){ var lat = res.geocode.center.lat this.sendData.emit(lat); }

No estoy muy familiarizado con el trato con promesas, etc. Entonces, ¿hay alguna forma de que pueda hacer esto? Sé que tiene algo que ver con la resolución de la promesa, pero no puedo entender cómo implementarla.

Cualquier ayuda es apreciada, Gracias!!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Entonces, si entendí su pregunta correctamente, está tratando de emitir un valor @Output en una función asíncrona. Realmente no sé qué es el geocodificador, pero con un poco de investigación encontré un ejemplo y lo aclararé lo mejor posible.

 public getAddress(query: string) { return new Promise((resolve, reject) => { this.geocoder.geocode({ searchText: query }, result => { if(result.Response.View.length > 0) { if(result.Response.View[0].Result.length > 0) { resolve(result.Response.View[0].Result); } else { reject({ message: "no results found" }); } } else { reject({ message: "no results found" }); } }, error => { reject(error); }); });}

Esta función devuelve una promesa, como dice el nombre, es una operación que promete devolver un valor después de que se complete algo, lo que pasa con una llamada API como ejemplo es que necesita algo de tiempo para llamar al punto final y recibir una respuesta. Puede suspender su programa y esperarlo o definir qué debe suceder después de que se complete el proceso y dejar que el programa continúe.

resolve() simplemente cumple la promesa y permite que el programa ejecute la función definida en el bloque entonces.

lo que hace el rechazo () debe ser claro, solo dice que algo salió mal y que luego puede ser capturado por el bloque catch en el bloque de funciones.

Entonces, ahora que ha definido una acción prometida y cuál es la promesa en sí misma, ahora quiere decirle al programa qué hacer cuando se cumpla la promesa, luego puede hacerlo en su programa.

mira esto :

 this.getAddress(this.yourQuery).then(result => { this.locations = <Array<any>>result; }, error => { console.error(error); });

esto luego llama a la función y le permite programar continuar, después de que se cumpla la promesa, regresará al bloque de función entonces y hará lo que haya especificado en este caso, a this.locations se le asigna el valor del resultado.

luego puede emitir el valor de salida en el bloque de función entonces porque eso ya no está en un subproceso asíncrono. (no puede vincular un valor de emisor angular en una función asíncrona o en un subproceso asíncrono)

espero que haya ayudado a codificar en sí mismo de: https://developer.here.com/blog/using-the-here-geocoder-api-for-javascript-in-an-angular-application

Como dije, no conozco la API y el caso de uso, pero espero que la explicación aclare cómo definir una promesa y esperarla.

solo pregunte si tiene preguntas, no soy un profesional con eso, no puedo explicar la funcionalidad de la superficie.

También puedo recomendar este video: https://www.youtube.com/watch?v=vn3tm0quoqE&t=194s . él hace grandes videos cortos para tales cosas.

Espero que haya ayudado.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!