Esta biblioteca es una refactorización de una versión anterior publicada en @google/maps. Ahora se está publicando en @googlemaps/google-maps-services-js.
¿Usar Node.js? ¿Quieres geocodificar algo? ¿Busca direcciones? Esta biblioteca trae los servicios web API de Google Maps a su aplicación Node.js.
El cliente Node.js para los servicios de Google Maps es una biblioteca de cliente Node.js para las siguientes API de Google Maps:
Tenga en cuenta que se aplican los mismos términos y condiciones al uso de las API cuando se accede a ellas a través de esta biblioteca.
Esta biblioteca está diseñada para aplicaciones Node.js del lado del servidor. Intentar usarlo en el lado del cliente, ya sea en el navegador o en cualquier otro entorno como React Native, puede funcionar en algunos casos, pero en la mayoría de los casos no. Absténgase de informar problemas con estos entornos cuando intente utilizarlos, ya que las aplicaciones Node.js del lado del servidor son el único entorno compatible con esta biblioteca . Para otros entornos, pruebe la API de JavaScript de Maps, que contiene un conjunto de funciones comparable y está diseñada explícitamente para su uso con JavaScript del lado del cliente.
$ npm install @googlemaps/google-maps-services-js
A continuación se muestra un ejemplo sencillo que llama al método de elevación en la clase de cliente.
Importe el cliente de Google Maps usando TypeScript y el módulo ES6:
import { Client } from "@googlemaps/google-maps-services-js" ;
Alternativamente, use JavaScript sin compatibilidad con el módulo ES6:
const { Client } = require ( "@googlemaps/google-maps-services-js" ) ;
Ahora cree una instancia del cliente para realizar una llamada a una de las API.
const client = new Client ( { } ) ;
client
. elevation ( {
params : {
locations : [ { lat : 45 , lng : - 110 } ] ,
key : process . env . GOOGLE_MAPS_API_KEY ,
} ,
timeout : 1000 , // milliseconds
} )
. then ( ( r ) => {
console . log ( r . data . results [ 0 ] . elevation ) ;
} )
. catch ( ( e ) => {
console . log ( e . response . data . error_message ) ;
} ) ;
La documentación de referencia generada se puede encontrar aquí. Los tipos de TypeScript son la documentación autorizada para esta biblioteca y pueden diferir ligeramente de las descripciones.
Para ejecutar las pruebas de un extremo a otro, deberá proporcionar su clave API a través de una variable de entorno.
$ export GOOGLE_MAPS_API_KEY=AIza-your-api-key
$ npm test
Esta sección analiza la migración de @google/maps a @googlemaps/google-maps-services-js y las diferencias entre los dos.
Nota : Las dos bibliotecas no comparten ningún método o interfaz.
La principal diferencia es que @google/maps
expone un método público que toma parámetros individuales como argumentos, mientras que @googlemaps/google-maps-services-js
expone métodos que toman params
, headers
, body
e instance
(consulte Axios). Esto permite el acceso directo a la capa de transporte sin la complejidad inherente a la antigua biblioteca. A continuación se muestran dos ejemplos.
@google/maps
): const googleMapsClient = require ( '@google/maps' ) . createClient ( {
key : 'your API key here'
} ) ;
googleMapsClient
. elevation ( {
locations : { lat : 45 , lng : - 110 }
} )
. asPromise ( )
. then ( function ( r ) {
console . log ( r . json . results [ 0 ] . elevation ) ;
} )
. catch ( e => {
console . log ( e ) ;
} ) ;
@googlemaps/google-maps-services-js
): const client = new Client ( { } ) ;
client
. elevation ( {
params : {
locations : [ { lat : 45 , lng : - 110 } ] ,
key : process . env . GOOGLE_MAPS_API_KEY
} ,
timeout : 1000 // milliseconds
} , axiosInstance )
. then ( r => {
console . log ( r . data . results [ 0 ] . elevation ) ;
} )
. catch ( e => {
console . log ( e ) ;
} ) ;
Las principales diferencias se encuentran en la siguiente tabla.
Viejo | Nuevo |
---|---|
Puede proporcionar parámetros | Puede proporcionar parámetros, encabezados, instancias y tiempos de espera (consulte Configuración de solicitud de Axios) |
Clave API configurada en el Cliente | Clave API configurada por método en el objeto params |
Se admite el reintento | El reintento se puede configurar mediante axios-retry o retry-axios |
No utiliza promesas por defecto | Las promesas son predeterminadas |
Los tipos de escritura están en @types/googlemaps | Se incluyen mecanografías |
No soporta mantener vivo | Los apoyos se mantienen vivos |
No soporta interceptores | Soporta interceptores |
No admite cancelación | Admite cancelación |
Se proporciona autenticación mediante ID de cliente y secreto de firma de URL para admitir aplicaciones heredadas que utilizan el plan Premium de Google Maps Platform. El plan Premium de Google Maps Platform ya no está disponible para registrarse o para nuevos clientes. Todas las aplicaciones nuevas deben utilizar claves API.
const client = new Client ( { } ) ;
client
. elevation ( {
params : {
locations : [ { lat : 45 , lng : - 110 } ] ,
client_id : process . env . GOOGLE_MAPS_CLIENT_ID ,
client_secret : process . env . GOOGLE_MAPS_CLIENT_SECRET
} ,
timeout : 1000 // milliseconds
} )
. then ( r => {
console . log ( r . data . results [ 0 ] . elevation ) ;
} )
. catch ( e => {
console . log ( e . response . data . error_message ) ;
} ) ;
Esta biblioteca cuenta con el apoyo de la comunidad. Nos sentimos lo suficientemente cómodos con la estabilidad y las características de la biblioteca y queremos que usted cree aplicaciones de producción reales en ella. Intentaremos admitir, a través de Stack Overflow, la superficie pública de la biblioteca y mantener la compatibilidad con versiones anteriores en el futuro; sin embargo, mientras la biblioteca esté en la versión 0.x, nos reservamos el derecho de realizar cambios incompatibles con versiones anteriores. Si eliminamos alguna funcionalidad (generalmente porque existe una mejor funcionalidad o si la característica resultó inviable), nuestra intención es dejarla obsoleta y darles a los desarrolladores un año para actualizar su código.
Si encuentra un error o tiene una sugerencia de función, registre un problema. Si desea contribuir, lea Cómo contribuir.