該庫是對發佈到@google/maps 的先前版本的重構。它現在發佈到@googlemaps/google-maps-services-js。
使用 Node.js?想要對某些內容進行地理編碼嗎?尋找路線?該庫將 Google Maps API Web 服務引入您的 Node.js 應用程式。
Google 地圖服務的 Node.js 用戶端是用於以下 Google 地圖 API 的 Node.js 用戶端程式庫:
請記住,透過此程式庫存取 API 時,相同的條款和條件適用於 API 的使用。
該庫專為伺服器端 Node.js 應用程式而設計。嘗試在客戶端使用它,無論是在瀏覽器還是任何其他環境(如 React Native)中,在某些情況下可能會起作用,但大多數情況下不會。嘗試使用這些環境時,請不要報告這些環境的問題,因為伺服器端 Node.js 應用程式是該程式庫唯一支援的環境。對於其他環境,請嘗試 Maps JavaScript API,它包含類似的功能集,並且明確地旨在與客戶端 JavaScript 一起使用。
$ npm install @googlemaps/google-maps-services-js
以下是呼叫客戶端類別上的levation 方法的簡單範例。
使用 TypeScript 和 ES6 模組匯入 Google 地圖用戶端:
import { Client } from "@googlemaps/google-maps-services-js" ;
或使用不支援 ES6 模組的 JavaScript:
const { Client } = require ( "@googlemaps/google-maps-services-js" ) ;
現在實例化客戶端以呼叫其中一個 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 ) ;
} ) ;
可以在此處找到產生的參考文件。 TypeScript 類型是該程式庫的權威文檔,可能與描述略有不同。
為了執行端到端測試,您需要透過環境變數提供 API 金鑰。
$ export GOOGLE_MAPS_API_KEY=AIza-your-api-key
$ npm test
本節討論從 @google/maps 到 @googlemaps/google-maps-services-js 的遷移以及兩者之間的差異。
注意:這兩個庫不共用任何方法或介面。
主要區別是@google/maps
公開了一個公共方法,該方法將各個參數作為參數,而@googlemaps/google-maps-services-js
公開了採用params
、 headers
、 body
、 instance
的方法(請參閱 Axios)。這允許直接存取傳輸層,而無需舊庫中固有的複雜性。下面是兩個例子。
@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 ) ;
} ) ;
主要差異如下表所示。
老的 | 新的 |
---|---|
可以提供參數 | 可提供參數、標頭、實例、逾時(請參閱 Axios 請求配置) |
在客戶端配置的 API 金鑰 | params 物件中每個方法配置的 API 金鑰 |
支援重試 | 重試可透過 axios-retry 或 retry-axios 配置 |
預設不使用 Promise | 承諾都是預設的 |
打字位於@types/googlemaps | 包括打字 |
不支援保活 | 支援保活 |
不支援攔截器 | 支援攔截器 |
不支援取消 | 支援取消 |
提供透過用戶端 ID 和 URL 簽署金鑰進行的身份驗證,以支援使用 Google Maps Platform 高級方案的舊版應用程式。 Google Maps Platform 高級方案不再可供註冊客戶或新客戶使用。所有新應用程式都必須使用 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 ) ;
} ) ;
該庫是社區支持的。我們對該庫的穩定性和功能非常滿意,我們希望您可以在其上建立真正的生產應用程式。未來我們將嘗試透過 Stack Overflow 支援庫的公共介面並保持向後相容性;然而,雖然該庫處於 0.x 版本,但我們保留進行向後不相容更改的權利。如果我們確實刪除了某些功能(通常是因為存在更好的功能或該功能被證明不可行),我們的目的是棄用並給開發人員一年的時間來更新他們的程式碼。
如果您發現錯誤或有功能建議,請記錄問題。如果您想貢獻,請閱讀如何貢獻。