Ioni c 4 - Карты исчезают после навигации - PullRequest
0 голосов
/ 31 января 2020

Я использую Maps API внутри моего приложения Ioni c 4.

Карта инициализируется при вызове компонента и работает хорошо! Но когда я закрываю и снова открываю компонент, карта становится серой, а масштаб - удаленным. Когда я пролистываю карту, она появляется снова, но мне все равно приходится сильно увеличивать масштаб до go на маркерах.

ngAfterViewInit() {

 this.getGoogleMaps()
  .then(googleMaps => {

    this.googleMaps = googleMaps;
    const mapEl = this.mapElementRef.nativeElement;
    this.geocoder = new google.maps.Geocoder();

    this.map = new googleMaps.Map(mapEl, {
      center: this.center,
      zoom: 17,
      disableDefaultUI: true
    });

    this.googleMaps.event.addListenerOnce(this.map, "idle", () => {
      this.renderer.addClass(mapEl, "visible");
    });

    if (!this.selectable) {

      const marker = new googleMaps.Marker({
        position: this.center,
        map: this.map,
        title: this.title,
        icon: {
          'url': '../../assets/icons/map-pin.png'
        },
        animation: google.maps.Animation.DROP
      });

      marker.setMap(this.map);

    }

    // show preview

    if (this.previewPlace) {
      this.selectedPlace = this.previewPlace;
      this.focus();
    }

  })
  .catch(err => {
    console.log(err);
  });

}

private getGoogleMaps(): Promise<any> {
  const win = window as any;
  const googleModule = win.google;
  if (googleModule && googleModule.maps) {
    return Promise.resolve(googleModule.maps);
  }
  return new Promise((resolve, reject) => {
    const script = document.createElement("script");
    script.src =
    "https://maps.googleapis.com/maps/api/js?key=xxxxxxxxxxxx";
    script.async = true;
    script.defer = true;
    document.body.appendChild(script);
    script.onload = () => {
      const loadedGoogleModule = win.google;
      if (loadedGoogleModule && loadedGoogleModule.maps) {
        resolve(loadedGoogleModule.maps);
      } else {
        reject("Google Maps SDK not available!");
      }
    };
  });

}

FIRST TIME

SECOND TIME

1 Ответ

0 голосов
/ 31 января 2020

Я исправил это, инициализировав карту в ionViewDidEnter () вместо ngAfterViewInit ().

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