react-native-gplaces

React Native library for utilizing Google's Autocomplete for Places.

Install

using npm

npm install --save react-native-gplaces

using yarn

yarn add react-native-gplaces

Importing

ES6

The module uses an ES6 style export statement, simply use import to load the module.

import GPlaces from 'react-native-gplaces';

ES5

If you're using an ES5 require statement to load the module, please add default. Look here for more detail.

var GPlaces = require('react-native-gplaces').default;

Usage

This package supports custom queries if you'd like to use them. For searching queries look here and queries for getting places look here.

Creating an instance

You can obtain a Google API key here.

const places = new GPlaces({
  key: 'YOUR_GOOGLE_MAPS_API_KEY' // https://developers.google.com/maps/documentation/javascript/get-api-key
});

Search for places

places.search('nemo', {
  components: 'country:nl',
  types: 'establishment'
})
  .then(r => {
    // returns ACResult[]
  })
  .catch(console.error)

Search for places nearby

places.searchNearby('brussel', 2500, {
  components: 'country:be',
  types: '(cities)'
})
  .then(r => {
    // returns ACResult[]
  })
  .catch(console.error)

Get details for a Place

places.getPlaceDetails('ChIJn8N5VRvZxkcRmLlkgWTSmvM', {
  fields: 'geometry'
})
  .then(r => {
    // returns PDResult
  })
  .catch(console.error)

API

constructor GPlaces(options: Options): GPlaces

Constructor for creating an instance of the GPlaces class

request: (url?: string) => Promise<any> (@private)

Calling this method will fetch an URL and return a JSON response

autocompleteRequest: (options?: string) => Promise<ACResult[]> (@private)

Calling this method will fetch and return an array of results

search: (input?: string, query?: ACQuery | undefined) => Promise<ACResult[]>

Calling this method will search for places matching the input.

searchNearby: (input?: string, radius?: number, query?: ACQuery | undefined) => Promise<ACResult[]>

Calling this method will search for nearby places matching the input in a given radius.
The default radius is 1000m / 1km.

getPlaceDetails: (placeid?: string, query?: PDQuery | undefined) => Promise<PDResult>

Calling this method will get certain details for a place based on a query.

Types

For up-to-date information about Autocomplete queries look here, for Place Details queries look here.

export interface ACQuery {
  sessiontoken?: string;
  offset?: number;
  location?: string;
  radius?: number;
  language?: string;
  types?: string;
  components?: string;
  strictbounds?: boolean;
}

export interface PDQuery {
  language?: string;
  region?: string;
  sessiontoken?: string;
  fields?: string;
}

export interface Options {
  key: string;
}

export interface MSubstring {
  length: number;
  offset: number;
}
export type MSubstrings = Array<MSubstring>

export interface SFormat {
  main_text: string;
  main_text_matched_substrings: MSubstrings;
  secondary_text: string;
}
export type SFormatting = Array<SFormat>

export interface Term {
  offset: number;
  value: string;
}
export type Terms = Array<Term>

export interface ACResult {
  id: string;
  place_id: string;
  reference: string;
  description: string;
  matched_substrings: MSubstrings;
  structured_formatting: SFormatting;
  terms: Terms;
  types: Array<string>;
}
export type ACResults = Array<ACResult>

export type Types = Array<string>
export type HTMLAttrs = Array<string>

export interface AddressComponent {
  long_name: string;
  short_name: string;
  types: Types;
}
export type AddressComponents = Array<AddressComponent>

export interface Photo {
  height: number;
  html_attributions: HTMLAttrs;
  photo_reference: string;
  width: number;
}
export type Photos = Array<Photo>

export interface Location {
  lat: string;
  lng: string;
}
export interface Viewport {
  northeast: Location;
  southwest: Location;
}
export interface Geometry {
  location: Location;
  viewport: Viewport;
}

export interface PDResult {
  address_components: AddressComponents;
  adr_address: string;
  formatted_address: string;
  geometry: Geometry;
  icon: string;
  id: string;
  name: string;
  photos: Photos;
  place_id: string;
  reference: string;
  scope: string;
  types: Types;
  url: string;
  utc_offset: number;
  vicinity: string;
}

GitHub