Cette bibliothèque est une refactorisation d'une version précédente publiée sur @google/maps. Il est maintenant publié sur @googlemaps/google-maps-services-js.
Utiliser Node.js ? Vous voulez géocoder quelque chose ? Vous cherchez un itinéraire ? Cette bibliothèque apporte les services Web de l'API Google Maps à votre application Node.js.
Le client Node.js pour les services Google Maps est une bibliothèque client Node.js pour les API Google Maps suivantes :
Gardez à l’esprit que les mêmes termes et conditions s’appliquent à l’utilisation des API lorsqu’elles sont accessibles via cette bibliothèque.
Cette bibliothèque est conçue pour les applications Node.js côté serveur. Tenter de l'utiliser côté client, dans le navigateur ou dans tout autre environnement comme React Native, peut dans certains cas fonctionner, mais dans la plupart des cas, cela ne fonctionnera pas. Veuillez vous abstenir de signaler des problèmes avec ces environnements lorsque vous essayez de les utiliser, car les applications Node.js côté serveur sont le seul environnement pris en charge pour cette bibliothèque . Pour d'autres environnements, essayez l'API Maps JavaScript, qui contient un ensemble de fonctionnalités comparable et est explicitement destinée à être utilisée avec JavaScript côté client.
$ npm install @googlemaps/google-maps-services-js
Vous trouverez ci-dessous un exemple simple appelant la méthode d'élévation sur la classe client.
Importez le client Google Maps à l'aide du module TypeScript et ES6 :
import { Client } from "@googlemaps/google-maps-services-js" ;
Vous pouvez également utiliser JavaScript sans prise en charge du module ES6 :
const { Client } = require ( "@googlemaps/google-maps-services-js" ) ;
Instanciez maintenant le client pour appeler l'une des 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 documentation de référence générée peut être trouvée ici. Les types TypeScript constituent la documentation faisant autorité pour cette bibliothèque et peuvent différer légèrement des descriptions.
Afin d'exécuter les tests de bout en bout, vous devrez fournir votre clé API via une variable d'environnement.
$ export GOOGLE_MAPS_API_KEY=AIza-your-api-key
$ npm test
Cette section traite de la migration de @google/maps vers @googlemaps/google-maps-services-js et des différences entre les deux.
Remarque : Les deux bibliothèques ne partagent aucune méthode ou interface.
La principale différence est que @google/maps
expose une méthode publique qui prend des paramètres individuels comme arguments tandis que @googlemaps/google-maps-services-js
expose des méthodes qui prennent params
, headers
, body
, instance
(voir Axios). Cela permet un accès direct à la couche de transport sans la complexité inhérente à l'ancienne bibliothèque. Ci-dessous, deux exemples.
@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 ) ;
} ) ;
Les principales différences figurent dans le tableau suivant.
Vieux | Nouveau |
---|---|
Peut fournir des paramètres | Peut fournir des paramètres, des en-têtes, une instance, un délai d'attente (voir Axios Request Config) |
Clé API configurée sur le client | Clé API configurée par méthode dans l'objet params |
La nouvelle tentative est prise en charge | La nouvelle tentative est configurable via axios-retry ou retry-axios |
N'utilise pas les promesses par défaut | Les promesses sont par défaut |
Les saisies sont dans @types/googlemaps | Les saisies sont incluses |
Ne prend pas en charge le maintien en vie | Les supports restent en vie |
Ne prend pas en charge les intercepteurs | Prend en charge les intercepteurs |
Ne prend pas en charge l'annulation | Prend en charge l'annulation |
L'authentification via l'ID client et le secret de signature d'URL est fournie pour prendre en charge les applications existantes qui utilisent le forfait Premium de Google Maps Platform. Le forfait Premium de Google Maps Platform n'est plus disponible pour les inscriptions ou les nouveaux clients. Toutes les nouvelles applications doivent utiliser des clés 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 ) ;
} ) ;
Cette bibliothèque est prise en charge par la communauté. Nous sommes suffisamment à l'aise avec la stabilité et les fonctionnalités de la bibliothèque pour que nous souhaitions que vous y construisiez de véritables applications de production. Nous essaierons de prendre en charge, via Stack Overflow, la surface publique de la bibliothèque et de maintenir la rétrocompatibilité à l'avenir ; cependant, tant que la bibliothèque est en version 0.x, nous nous réservons le droit d'apporter des modifications rétrocompatibles. Si nous supprimons certaines fonctionnalités (généralement parce qu'une meilleure fonctionnalité existe ou si la fonctionnalité s'est avérée irréalisable), notre intention est de la rendre obsolète et de donner aux développeurs un an pour mettre à jour leur code.
Si vous trouvez un bug ou avez une suggestion de fonctionnalité, veuillez enregistrer un problème. Si vous souhaitez contribuer, veuillez lire Comment contribuer.