#angular #typescript #google-maps #agm
Вопрос:
Я использую agm
и пытаюсь создать ярлыки имен для googleapi, используя псевдонимы пространств имен в typescript:
//general
export import GoogleMap = google.maps.Map;
export import GoogleStyleOptions = google.maps.Data.StyleOptions;
//map
export import GoogleStyledMapType = google.maps.StyledMapType;
//drawing:
export import GoogleDrawingManager = google.maps.drawing.DrawingManager;
export import GoogleOverlayCompleteEvent = google.maps.drawing.OverlayCompleteEvent;
export import GoogleOverlayType = google.maps.drawing.OverlayType;
export import GoogleCircle = google.maps.Circle;
export import GoogleFeature = google.maps.Data.Feature;
//events:
export import GoogleMouseEvent = google.maps.MouseEvent;
export import GoogleDataMouseEvent = google.maps.Data.MouseEvent;
//places:
export import GoogleAutoComplete = google.maps.places.Autocomplete;
export import GooglePlaceResult = google.maps.places.PlaceResu<
так что вместо того, чтобы писать:
@Component({
selector: 'app-google-map',
//....
initDrawingManager(map: google.maps.Map): void {
this.drawingManager = new google.maps.drawing.DrawingManager({
//....
я мог бы написать:
@Component({
selector: 'app-google-map',
//....
initDrawingManager(map: GoogleMap): void {
this.drawingManager = new GoogleDrawingManager({
//....
я получаю сообщение об ошибке
google-map.model.ts:2
— в файле были указаны псевдонимы пространств имен, хотя я мог загрузить файл псевдонимов до MapModule
загрузки, но это не сработало, я предполагаю, потому что этот файл был загружен еще до этого?:
export function initializeMapApiImports(
mapsAPILoader: MapsAPILoader,
): () => Promise<void> {
return () => mapsAPILoader.load()
}
@NgModule({
declarations: [
MapComponent,
GoogleMapComponent,
DataLayerMouseEventDirective
],
imports: [
CommonModule,
CoreViewModule,
AgmCoreModule.forRoot({
apiKey: '...',
libraries: ['places', 'drawing']
}),
],
providers: [
{ provide: APP_INITIALIZER, useFactory: initializeMapApiImports, deps: [MapsAPILoader], multi: true }
]
})
export class MapModule { }