• Stars
    star
    2,807
  • Rank 15,512 (Top 0.4 %)
  • Language
    TypeScript
  • License
    Apache License 2.0
  • Created over 8 years ago
  • Updated 15 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Node.js client library for Google Maps API Web Services

Node.js Client for Google Maps Services

npm Test Release codecov GitHub contributors semantic-release Discord

This library is a refactor of a previous version published to @google/maps. It is now being published to @googlemaps/google-maps-services-js.

Use Node.js? Want to geocode something? Looking for directions? This library brings the Google Maps API Web Services to your Node.js application.

The Node.js Client for Google Maps Services is a Node.js Client library for the following Google Maps APIs:

Keep in mind that the same terms and conditions apply to usage of the APIs when they're accessed through this library.

Attention!

This library is designed for server-side Node.js applications. Attempting to use it client-side, in either the browser or any other environment like React Native, may in some cases work, but mostly will not. Please refrain from reporting issues with these environments when attempting to use them, since server-side Node.js applications is the only supported environment for this library. For other environments, try the Maps JavaScript API, which contains a comparable feature set, and is explicitly intended for use with client-side JavaScript.

Quick Start

$ npm install @googlemaps/google-maps-services-js

Below is a simple example calling the elevation method on the client class.

Import the Google Maps Client using TypeScript and ES6 module:

import {Client} from "@googlemaps/google-maps-services-js";

Alternatively using JavaScript without ES6 module support:

const {Client} = require("@googlemaps/google-maps-services-js");

Now instantiate the client to make a call to one of the APIs.

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);
  });

Reference Documentation

The generated reference documentation can be found here. The TypeScript types are the authoritative documentation for this library and may differ slightly from the descriptions.

Developing

In order to run the end-to-end tests, you'll need to supply your API key via an environment variable.

$ export GOOGLE_MAPS_API_KEY=AIza-your-api-key
$ npm test

Migration

This section discusses the migration from @google/maps to @googlemaps/google-maps-services-js and the differences between the two.

Note: The two libraries do not share any methods or interfaces.

The primary difference is @google/maps exposes a public method that takes individual parameters as arguments while @googlemaps/google-maps-services-js exposes methods that take params, headers, body, instance(see Axios). This allows direct access to the transport layer without the complexity that was inherent in the old library. Below are two examples.

Old (@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);
  });

New (@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);
  });

The primary differences are in the following table.

Old New
Can provide params Can provide params, headers, instance, timeout (see Axios Request Config)
API key configured at Client API key configured per method in params object
Retry is supported Retry is configurable via axios-retry or retry-axios
Does not use promises by default Promises are default
Typings are in @types/googlemaps Typings are included
Does not support keep alive Supports keep alive
Does not support interceptors Supports interceptors
Does not support cancelalation Supports cancellation

Premium Plan Authentication

Authentication via client ID and URL signing secret is provided to support legacy applications that use the Google Maps Platform Premium Plan. The Google Maps Platform Premium Plan is no longer available for sign up or new customers. All new applications must use API keys.

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);
  });

Support

This library is community supported. We're comfortable enough with the stability and features of the library that we want you to build real production applications on it. We will try to support, through Stack Overflow, the public surface of the library and maintain backwards compatibility in the future; however, while the library is in version 0.x, we reserve the right to make backwards-incompatible changes. If we do remove some functionality (typically because better functionality exists or if the feature proved infeasible), our intention is to deprecate and give developers a year to update their code.

If you find a bug, or have a feature suggestion, please log an issue. If you'd like to contribute, please read How to Contribute.

More Repositories

1

google-maps-services-python

Python client library for Google Maps API Web Services
Python
4,327
star
2

android-maps-utils

Maps SDK for Android Utility Library
Java
3,519
star
3

android-samples

Samples demonstrating how to use Maps SDK for Android
Java
2,351
star
4

google-maps-services-java

Java client library for Google Maps API Web Services
Java
1,675
star
5

v3-utility-library

Utility libraries for Google Maps JavaScript API v3
JavaScript
1,094
star
6

android-maps-compose

Jetpack Compose composables for the Maps SDK for Android
Kotlin
1,055
star
7

js-samples

Samples for the Google Maps JavaScript v3 API
TypeScript
701
star
8

google-maps-ios-utils

Google Maps SDK for iOS Utility Library
Objective-C
699
star
9

google-maps-services-go

Go client library for Google Maps API Web Services
Go
695
star
10

transport-tracker

Applications for tracking moving assets on a live map
JavaScript
565
star
11

react-wrapper

Wrap React components with this libary to load the Google Maps JavaScript API.
TypeScript
344
star
12

android-maps-ktx

Kotlin extensions (KTX) for the Maps SDK and Utility Library for Android
Kotlin
314
star
13

js-api-loader

Load the Google Maps JavaScript API script dynamically.
TypeScript
306
star
14

maps-sdk-for-ios-samples

Samples for the Google Maps and Places SDKs for iOS
Objective-C
259
star
15

android-places-demos

Google Places SDK Demos for Android
Java
167
star
16

js-markerclusterer

Create and manage clusters for large amounts of markers
TypeScript
166
star
17

js-three

Add ThreeJS objects to Google Maps.
TypeScript
134
star
18

roads-api-samples

Sample Android app demonstrating usage of the GMP Roads API
Java
116
star
19

openapi-specification

OpenAPI specification for Google Maps Platform API
TypeScript
99
star
20

js-markerclustererplus

TypeScript
97
star
21

android-places-ktx

Kotlin extensions (KTX) for the Places SDK for Android
Kotlin
96
star
22

extended-component-library

A set of Web Components from Google Maps Platform
TypeScript
95
star
23

property-finder

A turnkey solution for a fictitious real estate business
Python
75
star
24

js-markerwithlabel

Google Maps Marker with Label
TypeScript
70
star
25

deck.gl-demos

Examples showing how to use Google Maps Platform with deck.gl
JavaScript
69
star
26

last-mile-fleet-solution-samples

Java
53
star
27

js-polyline-codec

Polyline encoding and decoding.
TypeScript
51
star
28

url-signing

Samples in various languages that demonstrate how to sign URLs for Google Maps Platform Web Services APIs
HTML
42
star
29

nyc-subway-station-locator

NYC Subway Station Locator Solution
Go
31
star
30

js-jest-mocks

Jest mocks for Google Maps Platform
TypeScript
29
star
31

ios-maps-sdk

Google Maps SDK for iOS
Swift
28
star
32

python-high-volume-address-validation-library

Python
27
star
33

android-on-demand-rides-deliveries-samples

Kotlin
22
star
34

android-maps-rx

RxJava bindings for the Maps and Places SDKs for Android
Kotlin
21
star
35

gaming-services-samples

Example games that use Google Maps Platform gaming services.
C#
20
star
36

js-map-loader

A simple JavaScript/TypeScript utility for adding a Google Map to webpages programmatically.
TypeScript
18
star
37

js-typescript-guards

TypeScript guards for the Google Maps JavaScript API.
TypeScript
17
star
38

fleet-debugger

JavaScript
16
star
39

js-markermanager

Marker manager is an interface between the map and the user, designed to manage adding and removing many points when the viewport changes.
TypeScript
15
star
40

ios-on-demand-rides-deliveries-samples

Objective-C
15
star
41

on-demand-rides-deliveries-samples

14
star
42

ios-combine

Combine extensions for Maps and Places SDKs for iOS
Swift
14
star
43

js-ogc

Add a WmsMapType to Google Maps
TypeScript
12
star
44

java-on-demand-rides-deliveries-stub-provider

Java
11
star
45

android-v3-migration

Migration tool for V3 BETA Maps SDK to Google Play services Maps SDK
Kotlin
11
star
46

.github

Default configurations for googlemaps repositories
11
star
47

java-fleetengine-auth

Java
10
star
48

react-on-demand-rides-deliveries-samples

TypeScript
10
star
49

react-last-mile-fleet-solution-samples

TypeScript
10
star
50

react-routing-playground

JavaScript
9
star
51

go-routespreferred

Go idiomatic client for Google Maps Platform Routes API.
8
star
52

js-types

Automatically generated types for the Google Maps Platform JavaScript API
Starlark
7
star
53

angular-on-demand-rides-deliveries-samples

TypeScript
6
star
54

js-url-signature

Sign a URL for Google Maps Platform requests.
TypeScript
6
star
55

semantic-release-config

Shareable configuration for semantic release.
JavaScript
5
star
56

gmp-firebase-extensions

TypeScript
5
star
57

codelab-maps-platform-101-swift

Companion code for the Add a map to your iOS app (Swift) codelab
Swift
5
star
58

fleet-events-reference-solution

Java
5
star
59

js-adv-markers-utils

TypeScript
4
star
60

codelab-places-101-android-kotlin

Companion code for the Get started with the Places SDK for Android (Kotlin) codelab
Kotlin
4
star
61

playablelocations-proxy

A proxy implementation for the Playable Locations API.
Go
4
star
62

eslint-plugin-googlemaps

ESLint rules for Google Maps Platform.
TypeScript
4
star
63

js-region-lookup

TypeScript
4
star
64

ios-places-sdk

Swift
4
star
65

js-github-policy-bot

Enforce polices for repositories in the googlemaps organization.
TypeScript
2
star
66

go-routespreferred-samples

Routes Preferred Samples in Go
Go
2
star
67

googlemaps.github.io

A page listing Google maintained GMP libraries as well as external ones.
HTML
2
star
68

java-routespreferred-samples

Samples for Routes Preferred
Java
2
star
69

eslint-config-googlemaps

Shareable ESLint style configuration for Google Maps repositories.
TypeScript
1
star
70

ios-navigation-sdk

Swift
1
star
71

java-routespreferred

Java idiomatic client for Google Maps Platform Routes Preferred API.
Java
1
star
72

.allstar

1
star