Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

144
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda