javascript - Angular 2在初始化第二张 map 时无法读取未定义的属性 'maps'

标签 javascript google-maps angular

我必须在我的应用程序中绘制 map 。第一个出现在登录后并且运行良好。第二个被放置在另一个组件中,在实例化时我收到错误

EXCEPTION: Uncaught (in promise): Error: Error in :0:0 caused by: Cannot read property 'maps' of undefined

Google map 脚本放置在 index.html 中,在这两种情况下,我都使用 ngOnInit 方法来创建 map 。

如果一张 map 有效而第二张 map 无效,可能会出现什么问题?

//imports
var google: any;

@Component({
  selector: 'app-friend-latest-position',
  templateUrl: 'friend-latest-position.component.html',
  styleUrls: ['friend-latest-position.component.css']
})
export class FriendLatestPositionComponent implements OnInit,AfterViewInit {

  private location: Location = new Location();
  private email: string;
  private hasLocation: boolean = false;


  constructor(private route: ActivatedRoute) {
  }

  ngOnInit() {
    this.email = this.route.snapshot.params['email'];
  }

  ngAfterViewInit(): void {
    this.getSelectedUser();
  }


  getSelectedUser() {
    // fetching data
   this.initMap();
  }

  initMap() {
    const loc = {lat: this.location.latitude, lng: this.location.longitude};
    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 7,
      center: loc
    });
}

最佳答案

你应该写

declare const google: any;

或者安装 Google map 类型

npm install @types/google-maps --save-dev

如果您使用 var,您当前的 Google 对象将在 typescript 文件的范围内被覆盖。

关于javascript - Angular 2在初始化第二张 map 时无法读取未定义的属性 'maps',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42886413/

相关文章:

javascript - 将数组转换为具有键/值对的对象

javascript - 想要在 html 页面中使用 jquery 或 javascript 显示和隐藏数据

javascript - 在 Facebox 中打开谷歌地图

php - 谷歌地图缩放级别

angular - 在 Angular 7 中,如何使用来自对象的数据填充垫表

javascript - ajax调用错误的链接路径

javascript - 导航标签不起作用

html - 使用谷歌地图隐藏垂直滚动条

node.js - 模块.js :538 throw err; using angular 4

angular - 交换 Nebular 主题时更改 Bootstrap 表字体颜色