добавить маркер на гугл карты в угловом компоненте - PullRequest
0 голосов
/ 30 августа 2018
  • Я пытаюсь добавить маркер на карты Google.
  • но я сталкиваюсь с ошибкой ниже. InvalidValueError: setMap: не экземпляр Map; а не экземпляр StreetViewPanorama
  • Подскажите, как это исправить.
  • с указанием кода и стекаблиц ниже.

https://stackblitz.com/edit/angular-gmaps-api-suvdaf?file=src/app/map-loader.ts

return MapLoader.load().then((gapi) => {
      this.map = new google.maps.Map(gmapElement.nativeElement, {
        center: new google.maps.LatLng(lat, lng),
        zoom: zoom,
        mapTypeId: type,
       // label: "A"
      });

      this.map1 = new google.maps.Marker({
        label: "A",
        position: { lat: 59.33555, lng: 18.029851 },
        map: map,
        title: 'Hello World!'
      });

      // let markerSimple = new google.maps.Marker({
      //   label: "A",
      //   position: { lat: 59.33555, lng: 18.029851 },
      //   map: map,
      //   title: 'Hello World!'
      // });
    });

1 Ответ

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

Если я понял ваш вопрос, этот модифицированный код добавит маркеры

  import { Injectable } from '@angular/core';
  import { } from '@types/googlemaps';
  declare var window: any;


   // Credits to: Günter Zöchbauer
  // StackOverflow Post: https://stackoverflow.com/a/39331160/9687729

   @Injectable()
   export class MapLoader {

    private static promise;
    map: google.maps.Map;

    public static load() {
      if (!MapLoader.promise) { // load once
      MapLoader.promise = new Promise((resolve) => {
      window['__onGapiLoaded'] = (ev) => {
        console.log('gapi loaded')
        resolve(window.gapi);
     }
      console.log('loading..')
      const node = document.createElement('script');
      node.src = 'https://maps.googleapis.com/maps/api/js?callback=__onGapiLoaded';
      node.type = 'text/javascript';
      document.getElementsByTagName('head')[0].appendChild(node);
    });
  }

  return MapLoader.promise;
}

   initMap(gmapElement, lat, lng, zoom, type) {

     return MapLoader.load().then((gapi) => {
       this.map = new google.maps.Map(gmapElement.nativeElement, {
       center: new google.maps.LatLng(lat, lng),
       zoom: zoom,
       mapTypeId: type,
       // label: "A"
     });
       //after map load add markers
        this.createMarker();
   });
 }

  createMarker() {

     // list of hardcoded positions markers 
      var myLatLngList = {
          myLatLng : [{ lat: 37.76487, lng: -122.41948 }, { lat: 59.33555, lng: 18.029851 }]    
          };

         //iterate latLng and add markers 
        for(const data of myLatLngList.myLatLng){
          var marker = new google.maps.Marker({
              position: data,
              map: this.map,
              title: 'markers'
          });
       }
  };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...