Diese Bibliothek ist eine Überarbeitung einer früheren Version, die auf @google/maps veröffentlicht wurde. Es wird jetzt unter @googlemaps/google-maps-services-js veröffentlicht.
Node.js verwenden? Möchten Sie etwas geokodieren? Suchen Sie nach einer Wegbeschreibung? Diese Bibliothek bringt die Google Maps API-Webdienste in Ihre Node.js-Anwendung.
Der Node.js-Client für Google Maps-Dienste ist eine Node.js-Clientbibliothek für die folgenden Google Maps-APIs:
Beachten Sie, dass für die Nutzung der APIs dieselben Geschäftsbedingungen gelten, wenn über diese Bibliothek darauf zugegriffen wird.
Diese Bibliothek ist für serverseitige Node.js-Anwendungen konzipiert. Der Versuch, es clientseitig zu verwenden, entweder im Browser oder in einer anderen Umgebung wie React Native, kann in einigen Fällen funktionieren, in den meisten Fällen jedoch nicht. Bitte melden Sie keine Probleme mit diesen Umgebungen, wenn Sie versuchen, sie zu verwenden, da serverseitige Node.js-Anwendungen die einzige unterstützte Umgebung für diese Bibliothek sind . Versuchen Sie für andere Umgebungen die Maps-JavaScript-API, die einen vergleichbaren Funktionsumfang enthält und ausdrücklich für die Verwendung mit clientseitigem JavaScript gedacht ist.
$ npm install @googlemaps/google-maps-services-js
Unten finden Sie ein einfaches Beispiel für den Aufruf der Elevation-Methode für die Client-Klasse.
Importieren Sie den Google Maps-Client mit TypeScript und dem ES6-Modul:
import { Client } from "@googlemaps/google-maps-services-js" ;
Alternativ mit JavaScript ohne ES6-Modulunterstützung:
const { Client } = require ( "@googlemaps/google-maps-services-js" ) ;
Instanziieren Sie nun den Client, um eine der APIs aufzurufen.
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 ) ;
} ) ;
Die generierte Referenzdokumentation finden Sie hier. Die TypeScript-Typen sind die maßgebliche Dokumentation für diese Bibliothek und können geringfügig von den Beschreibungen abweichen.
Um die End-to-End-Tests auszuführen, müssen Sie Ihren API-Schlüssel über eine Umgebungsvariable bereitstellen.
$ export GOOGLE_MAPS_API_KEY=AIza-your-api-key
$ npm test
In diesem Abschnitt werden die Migration von @google/maps zu @googlemaps/google-maps-services-js und die Unterschiede zwischen beiden erläutert.
Hinweis : Die beiden Bibliotheken teilen keine Methoden oder Schnittstellen.
Der Hauptunterschied besteht darin, dass @google/maps
eine öffentliche Methode bereitstellt, die einzelne Parameter als Argumente verwendet, während @googlemaps/google-maps-services-js
Methoden bereitstellt, die params
, headers
, body
, instance
akzeptieren (siehe Axios). Dies ermöglicht den direkten Zugriff auf die Transportschicht ohne die Komplexität, die der alten Bibliothek innewohnte. Nachfolgend finden Sie zwei Beispiele.
@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 ) ;
} ) ;
Die Hauptunterschiede sind in der folgenden Tabelle aufgeführt.
Alt | Neu |
---|---|
Kann Parameter bereitstellen | Kann Parameter, Header, Instanz und Timeout bereitstellen (siehe Axios Request Config) |
Beim Client konfigurierter API-Schlüssel | API-Schlüssel, der pro Methode im params-Objekt konfiguriert wird |
Wiederholen wird unterstützt | Retry kann über axios-retry oder retry-axios konfiguriert werden |
Verwendet standardmäßig keine Versprechen | Versprechen sind Standard |
Die Eingaben erfolgen in @types/googlemaps | Typisierungen sind enthalten |
Unterstützt Keep Alive nicht | Unterstützt, am Leben zu bleiben |
Unterstützt keine Abfangjäger | Unterstützt Abfangjäger |
Unterstützt keine Stornierung | Unterstützt Stornierung |
Die Authentifizierung über Client-ID und URL-Signaturgeheimnis wird bereitgestellt, um ältere Anwendungen zu unterstützen, die den Google Maps Platform Premium-Plan verwenden. Der Google Maps Platform Premium-Plan ist nicht mehr für Registrierungen oder Neukunden verfügbar. Alle neuen Anwendungen müssen API-Schlüssel verwenden.
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 ) ;
} ) ;
Diese Bibliothek wird von der Community unterstützt. Wir sind mit der Stabilität und den Funktionen der Bibliothek so zufrieden, dass wir möchten, dass Sie echte Produktionsanwendungen darauf erstellen. Wir werden versuchen, durch Stack Overflow die öffentliche Oberfläche der Bibliothek zu unterstützen und in Zukunft die Abwärtskompatibilität aufrechtzuerhalten; Obwohl sich die Bibliothek jedoch in Version 0.x befindet, behalten wir uns das Recht vor, abwärtskompatible Änderungen vorzunehmen. Wenn wir einige Funktionen entfernen (normalerweise, weil bessere Funktionen vorhanden sind oder sich die Funktion als nicht realisierbar erwiesen hat), ist es unsere Absicht, sie abzulehnen und den Entwicklern ein Jahr Zeit zu geben, ihren Code zu aktualisieren.
Wenn Sie einen Fehler finden oder einen Funktionsvorschlag haben, protokollieren Sie bitte ein Problem. Wenn Sie einen Beitrag leisten möchten, lesen Sie bitte „Mitwirken“.