UNPKG

@googlemaps/google-maps-services-js

Version:

Node.js client library for Google Maps API Web Services

156 lines (155 loc) 8.18 kB
/** * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { AddressType, LatLng, PredictionSubstring, PredictionTerm, RequestParams, ResponseData, StructuredFormatting } from "../common"; import { AxiosInstance, AxiosRequestConfig, AxiosResponse } from "axios"; export declare enum PlaceAutocompleteType { /** * instructs the Place Autocomplete service to return only geocoding results, rather than business results. * Generally, you use this request to disambiguate results where the location specified may be indeterminate. */ geocode = "geocode", /** * instructs the Place Autocomplete service to return only geocoding results with a precise address. * Generally, you use this request when you know the user will be looking for a fully specified address. */ address = "address", /** instructs the Place Autocomplete service to return only business results. */ establishment = "establishment", /** * the `(regions)` type collection instructs the Places service to return any result matching the following types: * - `locality` * - `sublocality` * - `postal_code` * - `country` * - `administrative_area_level_1` * - `administrative_area_level_2` */ regions = "(regions)", /** the (cities) type collection instructs the Places service to return results that match `locality` or `administrative_area_level_3`. */ cities = "(cities)" } export interface PlaceAutocompleteRequest extends Partial<AxiosRequestConfig> { params: { /** * The text string on which to search. The Place Autocomplete service will return candidate matches * based on this string and order results based on their perceived relevance. */ input: string; /** * A random string which identifies an autocomplete * [session](https://developers.google.com/places/web-service/autocomplete#session_tokens) for billing purposes. * If this parameter is omitted from an autocomplete request, the request is billed independently */ sessiontoken?: string; /** * The position, in the input term, of the last character that the service uses to match predictions. * For example, if the input is 'Google' and the `offset` is 3, the service will match on 'Goo'. * The string determined by the `offset` is matched against the first word in the input term only. * For example, if the input term is 'Google abc' and the offset is 3, the service will attempt to match against 'Goo abc'. * If no `offset` is supplied, the service will use the whole term. * The `offset` should generally be set to the position of the text caret. */ offset?: number; /** * The origin point from which to calculate straight-line distance to the destination (returned as distance_meters). * If this value is omitted, straight-line distance will not be returned. */ origin?: LatLng; /** The point around which you wish to retrieve place information. */ location?: LatLng; /** * The distance (in meters) within which to return place results. Note that setting a radius biases results to the indicated area, * but may not fully restrict results to the specified area. */ radius?: number; /** * The language code, indicating in which language the results should be returned, if possible. * Searches are also biased to the selected language; results in the selected language may be given a higher ranking. * See the list of supported languages and their codes. * Note that we often update supported languages so this list may not be exhaustive. * If language is not supplied, the Place Autocomplete service will attempt to use the native language * of the domain from which the request is sent. */ language?: string; /** The types of place results to return. */ types?: PlaceAutocompleteType; /** * A grouping of places to which you would like to restrict your results. * Currently, you can use `components` to filter by up to 5 countries. * Countries must be passed as a two character, ISO 3166-1 Alpha-2 compatible country code. * For example: `components=country:fr` would restrict your results to places within France. * Multiple countries must be passed as multiple `country:XX` filters, with the pipe character (`|`) as a separator. * For example: `components=country:us|country:pr|country:vi|country:gu|country:mp` would restrict your results * to places within the United States and its unincorporated organized territories. */ components?: string[]; /** * Returns only those places that are strictly within the region defined by `location` and `radius`. * This is a restriction, rather than a bias, meaning that results outside this region * will not be returned even if they match the user input. */ strictbounds?: boolean; } & RequestParams; } export interface PlaceAutocompleteResult { /** * contains the human-readable name for the returned result. * For `establishment` results, this is usually the business name. */ description: string; /** * contains an integer indicating the straight-line distance between the predicted place, and the specified origin point, in meters. * This field is only returned when the origin point is specified in the request. * This field is not returned in predictions of type route. */ distance_meters?: number; /** * is a textual identifier that uniquely identifies a place. * To retrieve information about the place, pass this identifier in the `placeId` field of a Places API request. */ place_id: string; /** * contains an array of terms identifying each section of the returned description * (a section of the description is generally terminated with a comma). */ terms: PredictionTerm[]; /** * contains an array of types that apply to this place. * For example: `[ "political", "locality" ]` or `[ "establishment", "geocode" ]`. */ types: AddressType[]; /** * contains an array with `offset` value and `length`. These describe the location of * the entered term in the prediction result text, so that the term can be highlighted if desired. */ matched_substrings: PredictionSubstring[]; /** contains details on the prediction. */ structured_formatting: StructuredFormatting; } export interface PlaceAutocompleteResponseData extends ResponseData { /** * contains an array of places, with information about the place. * See [Place Autocomplete Results](https://developers.google.com/places/web-service/autocomplete#place_autocomplete_results) * for information about these results. The Places API returns up to 5 results. */ predictions: PlaceAutocompleteResult[]; } export interface PlaceAutocompleteResponse extends AxiosResponse { data: PlaceAutocompleteResponseData; } export declare const defaultUrl = "https://maps.googleapis.com/maps/api/place/autocomplete/json"; export declare const defaultParamsSerializer: (params: Record<string, any>) => string; export declare function placeAutocomplete({ params, method, url, paramsSerializer, ...config }: PlaceAutocompleteRequest, axiosInstance?: AxiosInstance): Promise<PlaceAutocompleteResponse>;