Errores después de añadir @agm/core declaración de importación (Angular 7)
Estoy construyendo un sitio web usando Angular 7 y Google Maps (agm) y quiero añadir un mapa al mapa location
componente. Sin embargo, cuando agrego import { MapsAPILoader } from '@agm/core';
a mi location.component.ts
archivo, tengo múltiples errores de compilación que parecen venir de agm en sí mismo:
ERROR in node_modules/@agm/core/lib/services/google-maps-api-wrapper.d.ts(50,41): error TS2314: Generic type 'MapHandlerMap' requires 1 type argument(s).
node_modules/@agm/core/lib/services/google-maps-api-wrapper.d.ts(50,94): error TS2314: Generic type 'MapHandlerMap' requires 1 type argument(s).
node_modules/@agm/core/lib/services/managers/marker-manager.d.ts(25,93): error TS2694: Namespace 'google.maps' has no exported member 'MarkerMouseEventNames'.
node_modules/@agm/core/lib/services/managers/marker-manager.d.ts(25,129): error TS2694: Namespace 'google.maps' has no exported member 'MarkerChangeOptionEventNames'.
El código compila con éxito sin la mencionada declaración de importación, pero luego, por supuesto, el sitio web no funciona y no puedo trabajar con agm :)
¿Alguien sabe cómo resolver esto?
¡Gracias por adelantado!
# location.component.ts
código:
///
import { Component, OnInit, ViewChild } from '@angular/core';
import { Router, NavigationExtras, ActivatedRoute } from '@angular/router';
import {} from 'googlemaps';
import { MapsAPILoader } from '@agm/core'; // <- This causes the problem
@Component({
selector: 'location',
templateUrl: './location.component.html',
styleUrls: ['./location.component.css']
})
export class LocationComponent implements OnInit {
@ViewChild('map') mapElement: any;
map: google.maps.Map;
constructor(private route: ActivatedRoute, private mapsAPILoader: MapsAPILoader) { }
ngOnInit() {
this.route.queryParams.subscribe(params => {
console.log("carNumber in queryParams= " + params["carNumber"]);
});
this.mapsAPILoader.load().then(() => {
const mapProperties = {
center: new google.maps.LatLng(35.2271, -80.8431),
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
this.map = new google.maps.Map(this.mapElement.nativeElement, mapProperties);
});
}
}
Mi location.component.html
:
Pregunta hecha hace 3 años, 4 meses, 27 días - Por bughunterx
2 Respuestas:
-
El problema que estás experimentando se debe a la versión de TypeScript que estás utilizando y a cómo se están manejando los tipos genéricos en la librería '@agm/core'. Para resolver este error, puedes intentar lo siguiente:
- Actualizar la versión de TypeScript en tu proyecto. Puedes hacerlo ejecutando el siguiente comando en la terminal:
npm install typescript@latest --save-dev
Esto actualizará la versión de TypeScript en tu proyecto a la última versión disponible.
- Si el paso anterior no resuelve el problema, también puedes intentar agregar una declaración de tipo genérico al import de 'MapsAPILoader'. Esto podría ayudar a TypeScript a entender mejor cómo se están manejando los tipos genéricos en esa librería. Por ejemplo:
import { MapsAPILoader, MapHandlerMap } from '@agm/core';
- Asegúrate de tener todas las dependencias de la librería '@agm/core' correctamente instaladas en tu proyecto. Puedes hacerlo ejecutando el siguiente comando en la terminal:
npm install @agm/core --save
Espero que estas sugerencias te ayuden a resolver el problema que estás experimentando con la integración de la librería '@agm/core'. ¡Buena suerte!
Respondida el Dec 19, 2020 a las 16:10 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Para resolver el problema con la declaración de importación
import { MapsAPILoader } from '@agm/core';
, sigue estos pasos:1. Instala la versión correcta de
@agm/core
:Asegúrate de tener instalada la versión 1.1.0 o superior de
@agm/core
. Puedes verificarlo ejecutando el siguiente comando:npm list @agm/core
Si tienes una versión anterior, actualízala usando:
npm install @agm/[email protected]
2. Verifica las dependencias de
@agm/core
:Asegúrate de que tengas las siguientes dependencias instaladas:
@types/googlemaps
rxjs
zone.js
3. Vuelve a importar
MapsAPILoader
:Una vez que hayas verificado e instalado las dependencias necesarias, vuelve a importar
MapsAPILoader
en tu archivolocation.component.ts
:typescript import { MapsAPILoader } from '@agm/core';
4. Vuelve a agregar la referencia de tipo
googlemaps
:También necesitarás volver a agregar la referencia de tipo
googlemaps
en la parte superior de tu archivolocation.component.ts
:typescript ///
5. Reconstruye tu proyecto:
Una vez que hayas realizado los cambios, reconstruye tu proyecto para que los errores desaparezcan.
Solución alternativa:
Si aún tienes problemas después de seguir los pasos anteriores, puedes intentar utilizar una solución alternativa temporal:
- Ve al archivo `node_modules/@agm/core/lib/services/google-maps-api-wrapper.d.ts`.
- Busca la línea `export declare type MapHandlerMap
= google.maps.MapHandlerMap ;`.
- Cambia `google.maps.MapHandlerMap
` por `any`.
Nota:* Esta solución alternativa no se recomienda para uso en producción, ya que puede provocar problemas inesperados. Lo mejor es resolver el problema de importación según los pasos descritos anteriormente.
Respondida el Dec 19, 2020 a las 16:19 - por Gemini
Votos positivos: 0 | Votos negativos: 0