Я использую клиентскую библиотеку Google Geocode в своем приложении Angular 7. Здесь мне нужно извлечь ключ API Google из моего файла конфигурации JSON, а затем установить его в AGM.
Мой файл конфигурации загружается на основе среды сборки (Dev / QA / Prod), поэтому что я загружаю его, как показано ниже.
load() {
const jsonFile = `assets/config/config.${environment.name}.json`;
return new Promise((resolve, reject) => {
this.http.get(jsonFile).pipe(map((res: IAppConfig) => {
AppConfig.settings = <IAppConfig>res;
return AppConfig.settings;
})).subscribe(() => {
resolve();
});
}).catch((response: any) => {
console.log(`Could not load file '${jsonFile}': ${JSON.stringify(response)}`);
});
}
Я дал LAZY_MAPS_API_CONFIG в app.module.ts как провайдер.
{
provide: LAZY_MAPS_API_CONFIG,
useClass: GoogleMapsConfigService
}
В классе GoogleMapsConfigService я установил ключ API Google, как показано ниже:
export class GoogleMapsConfigService {
apiKey: string;
constructor(appConfig: AppConfig) {
appConfig.load().then(() => {
this.apiKey = AppConfig.settings.googleApiKey;
});
}
}
Однако, таким образом, мой ключ API не устанавливается, потому что я думаю, так как я загружаю свой файл конфигурации как обещание и время загрузки AGM устанавливает ключ API как пустой. На консоли браузера появляется следующее предупреждение.
Карты Google JavaScript Предупреждение API: NoApiKeys
ПРИМЕЧАНИЕ: Я попытался установить ключ API в AgmCoreModule.forRoot()
в app.module.ts, также загрузив ключ API из конфига в APP_INITIALIZER. но я не мог заставить его работать.
Может кто-нибудь, пожалуйста, дайте мне понимание, чтобы решить эту проблему. Спасибо.