在Angular Google Maps中进行反向地理编码

5
getAddress( lat: number, lng: number ) {
    console.log('Finding Address');
    if (navigator.geolocation) {
      let geocoder = new google.maps.Geocoder();
      let latlng = new google.maps.LatLng(lat, lng);
      let request = { latLng: latlng };
      geocoder.geocode(request, (results, status) => {
        if (status === google.maps.GeocoderStatus.OK) {
          let result = results[0];
          let rsltAdrComponent = result.address_components;
          let resultLength = rsltAdrComponent.length;
          if (result != null) {
            this.address = rsltAdrComponent[resultLength - 8].short_name;
          } else {
            alert('No address available!');
          }
        }
      });
  }
  }

我正在尝试在我的 Angular 4 应用中使用反向地理编码。我正在使用 agm 将 Google 地图与 Angular 应用程序集成。
在 *.ts 文件中,声明了以下 Google 变量:
declare let google: any;

但是,当我使用时,会出现以下错误:
ERROR ReferenceError: google未定义
请帮助我解决这个问题。
以下是组件.ts文件:
declare let google: any;
@Component({
  selector: 'app-find-cycle',
  templateUrl: './cmp.component.html',
  styleUrls: ['./cmp.component.scss']
})

export class Cmp {
}

希望您在组件装饰器上方声明了 declare let google: any; ? - Franklin Pious
包含了 Google 地图 API,对吧? - Franklin Pious
你需要使用已加载的地图函数,并在其中调用getAddress(),谷歌在此之前没有被加载。 - Ruben
@Ruben,你能给我提供一个例子吗? - Anil
@FranklinPious,我已经通过AGM(https://angular-maps.com/)进行了集成,我认为这已经足够了。如果我错了,请纠正我。 - Anil
显示剩余2条评论
1个回答

6
在地图加载完成后执行getAddress()函数。
<agm-map (mapReady)="mapReady()" [latitude]="lat" [longitude]="lng" [zoom]="zoom" [styles]="styles">

mapReady() {
    this.getAddress(...);
}

或者在构造函数中添加private mapsAPILoader: MapsAPILoader,
 this.mapsAPILoader.load().then(() => { ... });

谢谢,我明白了。我忘记在我的组件中加载agm-map了。 - Anil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接