Ошибка типа: невозможно прочитать свойство 'map' из null. Ионная 3 машинопись - PullRequest
0 голосов
/ 24 августа 2018

Итак, я пытаюсь добавить маркеры на мою Карту, используя данные, предоставленные firebase, и я получаю вышеуказанную ошибку.Я проверил другие темы, но не нашел решения для моей проблемы.Некоторые предположили, что это поврежденный пакет из package.json или из-за асинхронного кода firebase.Я вставляю свой код ниже.Пожалуйста, не возражайте против мест, где я ставлю async и жду, когда я пытался синхронизировать код, чтобы увидеть, если это проблема.

export class LocMapPage {

  @ViewChild('map') mapElement: ElementRef;

  public map: any;
  coords: any;

  constructor(public navCtrl: NavController, public afd: AngularFireDatabase) {

  }

  ionViewDidLoad(){
      this.loadMap();
  }

  async loadMap(){

    try{

      let latLng = new google.maps.LatLng(39.361798, 22.941316);

      let mapOptions = {

        center: latLng,
        zoom: 9,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      }

      this.map = new google.maps.Map(this.mapElement.nativeElement, mapOptions);


      var MarkersRef = await firebase.database().ref("/HyperCategories/hyperCats/Locations/Mountain/Mountains/M1/");

    }catch(error){
      console.error(error);
    }

    MarkersRef.orderByChild("coords").on("child_added", function(data) {

        let lat = data.val().latitude;
        let lon = data.val().longitude;

        let myLatLng = {lat: lat, lng: lon};

        let marker = new google.maps.Marker({

          map: this.map,
          animation: google.maps.Animation.DROP,
          position: myLatLng

        });

        console.log(myLatLng);

    });

  }
}

1 Ответ

0 голосов
/ 24 августа 2018

В Javascript асинхронная функция вернет обещание, которое будет доступно в вызывающей функции с помощью «.then».

ionViewDidLoad(){
   this.loadMap().then(()=>{
      //success
   });
}
...