该库是对发布到@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 版本,但我们保留进行向后不兼容更改的权利。如果我们确实删除了某些功能(通常是因为存在更好的功能或者该功能被证明不可行),我们的目的是弃用并给开发人员一年的时间来更新他们的代码。
如果您发现错误或有功能建议,请记录问题。如果您想贡献,请阅读如何贡献。