es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

AQUÍ: Retornar un Observable Mientras Espera que finalice la cambio de estado y luego suscribirse a él

Estoy teniendo dificultades para resolver estos 2 problemas y todavía estoy trabajando en ello. Espero que alguien pueda ayudarme. ¡Gracias de antemano!

1.) Tengo un map.service con esta función.

readKML(file): any {
    const exportUrl = URL.createObjectURL(file);
    const reader = new HERE_MAP.data.kml.Reader(exportUrl);

    // Parse the document
    reader.parse();

    reader.addEventListener('statechange', (evt) => {
      if (evt.state === HERE_MAP.data.AbstractReader.State.READY) {


        return of({
          markers: ['prueba'],
          lines: ['prueba']
        });

      }
      if (evt.state === HERE_MAP.data.AbstractReader.State.ERROR) {
        this.message.error('Error al analizar el KML');
         return of(null);
      }
    });
  }

Esta función se llama en el componente y se espera recibir los datos devueltos.

this.map.service.readKML(file)
.subscribe(
  data => {
    console.log(data);
  }
)

El problema es que estoy obteniendo un error

this.map.readKML(...).subscribe no es una función

Expectativa:

Los datos deben recibirse si el estadoChange es igual a ‘READY’.

2.) El servicio se llamará al mismo tiempo con diferentes valores de parámetro y se espera tener diferentes resultados si el número 1 está bien.

Sin embargo, esto se puede resolver si el número 1 sigue siendo un problema.

this.map.service.readKML(file1)
    .subscribe(
      data => {
        console.log('uno', data);
      }
    )

this.map.service.readKML(file1)
    .subscribe(
      data => {
        console.log('dos', data);
      }
    )

Si tienen alguna idea de cómo solucionar esto u otra aproximación, se agradece mucho. ¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Necesito ayuda con problemas del servicio de mapas

    Hola a todos,

    Soy un experto en TI especializado en JavaScript, Angular, TypeScript y HERE Maps. Actualmente estoy enfrentando dos problemas con mi servicio de mapas (map.service) y estoy teniendo dificultades para resolverlos por mi cuenta. Espero recibir ayuda de la comunidad. ¡Gracias de antemano!

    Problema 1

    Tengo un map.service con una función readKML(file), la cual es llamada por un componente. Esta función está diseñada para devolver un objeto con marcadores y líneas, pero me encuentro con un error al intentar recibir los datos.

    readKML(file): any {
      const exportUrl = URL.createObjectURL(file);
      const reader = new HERE_MAP.data.kml.Reader(exportUrl);
    
      // Parse the document
      reader.parse();
    
      reader.addEventListener('statechange', (evt) => {
        if (evt.state === HERE_MAP.data.AbstractReader.State.READY) {
          return of({
            markers: ['test'],
            lines: ['test']
          });
        }
    
        if (evt.state === HERE_MAP.data.AbstractReader.State.ERROR) {
          this.message.error('Error al analizar el KML');
          return of(null);
        }
      });
    }
    

    Este es el código para llamar a la función.

    this.map.service.readKML(file)
    .subscribe(
      data => {
        console.log(data);
      }
    )
    

    El mensaje de error que recibo es: “this.map.readKML(…).subscribe no es una función”.

    Espero que alguien pueda ayudarme a identificar el problema y proporcionar una solución viable. Espero recibir mis datos si el estado es “READY”.

    Problema 2

    Si se ha resuelto el problema anterior, necesito abordar un segundo problema donde el mismo servicio será llamado al mismo tiempo con diferentes parámetros. Espero que estos diferentes parámetros den resultados diferentes.

    Este es un ejemplo del código que estoy usando actualmente:

    this.map.service.readKML(file1)
    .subscribe(
      data => {
        console.log('uno', data);
      }
    )
    
    this.map.service.readKML(file2)
    .subscribe(
      data => {
        console.log('dos', data);
      }
    )
    

    Si tienes alguna sugerencia o idea sobre cómo resolver estos problemas, te agradecería mucho. ¡Gracias!

Comments are closed.