javascript - 类型错误 : Cannot read property 'maps' of undefined (Google maps places autocomplete Angular 2)

标签 javascript angular google-maps

我正在尝试通过 Angular 5 使用谷歌地图自动完成功能,我遵循了 http://myangularworld.blogspot.com.eg/2017/07/google-maps-places-autocomplete-using.html 中的本教程,并且由于某种原因运行后无法识别谷歌

这些是我的进口:

import { .... NgZone }
import { MapsAPILoader } from '@agm/core';
import { } from '@types/googlemaps';
import { google } from '@agm/core/services/google-maps-types';

这是注入(inject):

constructor(
private mapsAPILoader: MapsAPILoader,
private ngZone: NgZone) {

这是 ngonit 中的主要功能:

ngOnInit() {
this.mapsAPILoader.load().then(() => {
  const autoComplete = new google.maps.places.AutoComplete(this.searchElement.nativeElement, { types: ['address'] });
  autoComplete.addListener('place_changed', () => {
    this.ngZone.run(() => {
      const places: google.maps.places.PlaceResult = autoComplete.getPlace();
      if (places.geometry === undefined || places.geometry === null) {
        return;
      }
    });
  });
});

这里是错误:

TypeError: Cannot read property 'maps' of undefined

最佳答案

让我们看一下:

...
// import this two modules and all should be fine.
import { } from 'googlemaps';
import { MapsAPILoader } from '@agm/core';
...
constructor(
    private mapsAPILoader: MapsAPILoader,
    private ngZone: NgZone
  ) {}

    ngOnInit() {
this.mapsAPILoader.load().then(() => {
  const autoComplete = new google.maps.places.AutoComplete(this.searchElement.nativeElement, { types: ['address'] });
  autoComplete.addListener('place_changed', () => {
    this.ngZone.run(() => {
      const places: google.maps.places.PlaceResult = autoComplete.getPlace();
      if (places.geometry === undefined || places.geometry === null) {
        return;
      }
    });
  });
});

此外,您还需要安装下一个 npm:

$ npm install @agm/core --save
$ npm install @types/googlemaps --save-dev

希望对您有所帮助。 http://brianflove.com/2016/10/18/angular-2-google-maps-places-autocomplete/

UPD

我创建了一个 stackblitz 示例:https://stackblitz.com/edit/angular-5-example-zswbff 对我来说,一切正常。

你用过webpack、angular/cli吗?

关于javascript - 类型错误 : Cannot read property 'maps' of undefined (Google maps places autocomplete Angular 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50318486/

相关文章:

c# - 从代码隐藏页面调用 Javascript 函数

javascript - 输入元素上的 Angular 2 双数据绑定(bind)不起作用

Angular 4 错误错误 : Uncaught (in promise): RangeError: Maximum call stack size exceeded

Angular 8/Sass : Find unused css classes

android - 退出应用程序或导航到不同的 Activity 时,如何保存手动添加到 google maps v2 的标记?

google-maps - Google map 编码的折线未按预期显示

Javascript Month 方法问题

javascript - Edge 中的 <input type ="file"> 无法识别输入事件

javascript - 尝试获取元素onload的offset top值时获取0

javascript - 如何在谷歌地图中设置矩形大小?