在 AGM Map 之前加载 googlemaps api

aby*_*e85 5 google-maps angular

我正在尝试独立于 AGM 地图模块加载谷歌地图 API。我尝试这样做是因为在某些情况下我想在不使用 AGM 模块的情况下访问 Google Maps API。例如,如果我想加载街景,我需要调用 Google Maps 服务,我希望 API 已经加载并可以使用。出现问题是因为 app.module 中的 AgmCoreModule 负责加载 Google API,如下所示:

    AgmCoreModule.forRoot({
        apiKey: 'API_KEY',
        libraries: ['places', 'drawing', 'geometry']
    })
Run Code Online (Sandbox Code Playgroud)

这适用于使用 AGM 组件加载地图。该脚本被附加到 index.html 文件,一切正常。但是,如果我想在没有实例化地图的情况下访问 Google Maps API,则 AGM 模块未附加 Google API 脚本并且“google”未定义。

有没有一种方法可以在不使用 AgmCoreModule 上的 forRoot() 函数的情况下加载 Google Maps API?

aby*_*e85 3

我通过使用 MapsApiLoader 服务解决了这个问题。无需触摸 app.module 中的任何内容或更改 AgmCoreModule 的初始化方式。

import { MapsAPILoader } from '@agm/core';


 constructor(
    private _mapsAPILoader: MapsAPILoader
  ) { }

this._mapsAPILoader.load().then(() => {
  //do stuff here
});
Run Code Online (Sandbox Code Playgroud)