Используйте два параметра в одном методе - PullRequest
0 голосов
/ 29 июня 2019

Я пытаюсь собрать приложение IONIC, используя Angular.Мое приложение - контент на карте Google, в том числе данные json api для аэропортовых координат, которые отображаются на карте.Я хочу изменить цвет иконки аэропортов в зависимости от индекса задержки.Для этого я использовал параметры буксировки одним методом, а этот метод отвечает за иконки аэропорта и координаты аэропортов.

имя метода addMarker()

Мой код:

export class HomePage implements OnInit {
  points: Array<any> = [];
  Data: any;
  map: GoogleMap;
  mags_icons: string;
  DelayAvg: any

  constructor(private http: HTTP) { }


  ngOnInit() {
    this.loadMap();
    this.getData();
  }

  loadMap() {
    this.map = GoogleMaps.create('map_canvas');
  }

  getData() {

    this.http.get("xxxxxxxxxxxxx", {}, {}).then(data => {


      // coordinates 


      this.Data = JSON.parse(data.data);
      this.points = Object.keys(this.Data)
        .map(key => this.Data[key].airport.position)
        .map((position) => ({
          lat: position.latitude,
          lng: position.longitude
        }))
        console.log(this.points)

        this.points.forEach((point) => {

          this.addMarker(point);
        });



        // icons 

      this.DelayAvg = Object.keys(this.Data)
        .map(key => this.Data[key].stats.arrivals)
        .map((arrivals) => (
         arrivals.delayIndex

        ))
        console.log(this.DelayAvg)

      this.DelayAvg.forEach((icons: any) => {

        this.addMarker(icons)


        let mag = icons;

        switch (mag) {
          case 0:
          case 1.9:
            return this.mags_icons = './assets/icon/green.png';
          case 2:
          case 3.5:
            return this.mags_icons = './assets/icon/yellow.png';
          case 3.6:
          case 5:
            return this.mags_icons = './assets/icon/red.png';
          default:
            return "blue";
        }
      });



      console.log(this.mags_icons)

    })

  }

  addMarker(point,icons) {
    return this.map.addMarkerSync({
      title: 'Ionic',
      icon: icons,
      animation: 'DROP',
      position: point
    });
  }



}

, но проблема в том, что я получил ошибку в this.addMarker(icons) и this.addMarker(point);

ошибка Expected 2 arguments, but got 1.

есть идеи, пожалуйста?

1 Ответ

1 голос
/ 29 июня 2019

Используйте следующий способ для достижения вашей цели. Там в функции карты вернуть новый точечный объект с местоположением и свойством значка.

export class HomePage implements OnInit {

  points: Array<any> = [];
  Data: any;
  map: GoogleMap;

  constructor(private http: HttpClient) { }

  ngOnInit() {
    this.loadMap();
    this.getData();
  }

  loadMap() {
    this.map = GoogleMaps.create('map_canvas');
  }

  getData() {
    this.http.get("<URL>").
      subscribe((data) => {
        this.Data = JSON.parse(data.data);
        this.points = Object.keys(this.Data)
          .map(key => this.Data[key])
          .map((data) => {
            var point = {};
            point["location"] = { lat: data.airport.position.latitude, lng: data.airport.position.longitude };
            switch (data.stats.arrivals.delayIndex) {
              case 0:
                break;
              case 1.9:
                point["icon"] = './assets/icon/green.png';
                break;
              case 2:
                break;
              case 3.5:
                point["icon"] = './assets/icon/yellow.png';
                break;
              case 3.6:
                break;
              case 5:
                point["icon"] = './assets/icon/red.png';
                break;
              default:
                point["icon"] = './assets/icon/blue.png';
            }
            return point;
          });
        this.points.forEach((point) => {
          this.addMarker(point);
        });
      });
  }

  addMarker(point: any) {
    return this.map.addMarkerSync({
      title: 'Ionic',
      icon: point.icon,
      animation: 'DROP',
      position: point.location
    });
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...