Не удается найти другой объект поддержки '33 .265625 'типа' номер ' - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть приложение Ionic, использующее карты Google. Я пытаюсь получить широту и долготу из данных json api для маршрута полета, и эти данные json api затем внедряют эти данные в полилинию Карт Google. Получать данные json api работает нормально без проблем, но когда я помещаю объекты в Google Maps, я получаю ошибку Error: Cannot find a differ supporting object '33.265625' of type 'number'. NgFor only supports binding to Iterables such as Arrays. Я использую forEach для перемещения по массиву.

мой код:

 async getmarker(){
    this.http.get('/v1/flightjson?flightId=201',{},{})
    .then( data=>{

      // this.latitude = JSON.parse(data.data).result.response.data.flight.track.latitude
      // this.longitude = JSON.parse(data.data).result.response.data.flight.track

      for(let datas of JSON.parse(data.data).result.response.data.flight['track']) {
        this.longitude = datas.longitude
        this.latitude  = datas.latitude

        console.log(this.longitude)
        // Do something.
      }



    })

  }

  loadMap() {
    let AIR_PORTS = [
      this.latitude,
      this.longitude
    ];

    this.map = GoogleMaps.create('map_canvas');

    let polyline: Polyline = this.map.addPolylineSync({
      points: AIR_PORTS,
      color: '#AA00FF',
      width: 10,
      geodesic: true,
      clickable: true  // clickable = false in default
    });

    polyline.on(GoogleMapsEvent.POLYLINE_CLICK).subscribe((params: any) => {
      let position: LatLng = <LatLng>params[0];

      let marker: Marker = this.map.addMarkerSync({
        position: position,
        title: position.toUrlValue(),
        disableAutoPan: true
      });
      marker.showInfoWindow();
    });
  }

мои данные json url

HTML

  <div id="map_canvas"></div>

1 Ответ

0 голосов
/ 08 апреля 2019
for(let datas of JSON.parse(data.data).result.response.data.flight['track']) {
    this.longitude = datas.longitude
    this.latitude  = datas.latitude
}

В вышеупомянутом цикле for я предполагаю, что this.longitude и this.latitude будут массивами.Вам следует push элементов внутри this.longitude и this.latitude (как показано ниже), вместо замены предыдущего значения.

this.longitude.push(datas.longitude);
this.latitude.push(datas.latitude);

Вы можете использовать эти переменные для перебора различных точек на карте,поскольку они являются простыми числами, ngFor выдаст ошибку, говорящую, что содержимое внутри ngFor должно быть iterable.Array - это iterable, тогда как number - нет.

...