react-google-geocoding
Version:
A lightweight wrapper around Google Places Autocomplete and Directions APIs.
69 lines (68 loc) • 5.36 kB
TypeScript
import { Language, RegionCode, PlaceType } from "./types";
interface UsePlacePredictionsResult {
predictions: google.maps.places.AutocompletePrediction[];
isLoading: boolean;
status: keyof typeof google.maps.places.PlacesServiceStatus | null;
}
interface UsePlacePredictions extends google.maps.places.AutocompletionRequest {
language?: Language | null;
types?: PlaceType[];
/**
* The query debounce in milliseconds.
*/
debounceMs?: number;
region?: RegionCode | null;
}
/**
* Retrieves place autocomplete predictions based on the supplied
* autocomplete request.
*
* @param {string} input - The user-entered input string.
* @param {number} [debounceMs=300] - The request debounce in milliseconds; defaults to 300.
* @param {google.maps.places.AutocompleteSessionToken} [sessionToken] - Unique reference used to bundle individual requests into sessions.
* @param {(google.maps.LatLng|google.maps.LatLngLiteral|google.maps.LatLngBounds|google.maps.LatLngBoundsLiteral|google.maps.Circle|google.maps.CircleLiteral|string|null)} [locationBias] - A soft boundary or hint to use when searching for places.
* @param {(google.maps.LatLngBounds|google.maps.LatLngBoundsLiteral|null)} [locationRestriction] - Bounds to constrain search results.
* @param {(Language|null)} [language] - A language identifier for the language in which the results should be returned, if possible.
* Results in the selected language may be given a higher ranking, but suggestions are not restricted to this language.
* See the [list of supported languages](https://developers.google.com/maps/faq#languagesupport).
* @param {PlaceType[]} [types] - The types of predictions to be returned. For supported types, see the
* {@link https://developers.google.com/maps/documentation/javascript/places-autocomplete#constrain-place-types developer's guide}.
* If no types are specified, all types will be returned.
* @param {google.maps.places.ComponentRestrictions} [componentRestrictions] - The component restrictions. Component restrictions are used to restrict
* predictions to only those within the parent component, such as a country.
* @param {number} [offset] - The character position in the input term at which the service uses text
* for predictions (the position of the cursor in the input field).
* @param {(google.maps.LatLng|google.maps.LatLngLiteral)} [origin] - The location where {@link google.maps.places.AutocompletePrediction.distance_meters} is calculated from.
* @param {(RegionCode|null)} [region] - A region code used for result formatting and filtering. It does not restrict the suggestions to this country.
*
* The region code accepts a {@link https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains#Country_code_top-level_domains ccTLD ("top-level domain")}
* two-character value. Most ccTLD codes are identical to ISO 3166-1 codes, with some notable exceptions. For
* example, the United Kingdom's ccTLD is `"uk"` (`.co.uk`), while its ISO 3166-1 code is `"gb"`
* (technically for the entity of "The United Kingdom of Great Britain and Northern Ireland").
*
* @param {google.maps.LatLng} [location] - Location for prediction biasing. Predictions will be biased towards the
* given `location` and `radius`. Alternatively, `bounds` can be used.
* **Deprecated**: This parameter is deprecated as of May 2023. Use
* {@link google.maps.places.AutocompletionRequest.locationBias | locationBias} and
* {@link google.maps.places.AutocompletionRequest.locationRestriction | locationRestriction} instead.
*
* @param {number} [radius] - The radius of the area used for prediction biasing. The `radius` is specified
* in meters and must always be accompanied by a `location` property. Alternatively, `bounds` can be used.
* **Deprecated**: This parameter is deprecated as of May 2023. Use
* {@link google.maps.places.AutocompletionRequest.locationBias | locationBias} and
* {@link google.maps.places.AutocompletionRequest.locationRestriction | locationRestriction} instead.
*
* @param {google.maps.LatLngBounds|google.maps.LatLngBoundsLiteral} [bounds] - Bounds for prediction biasing. Predictions will be biased towards, but
* not restricted to, the given `bounds`. Both `location` and `radius` will be ignored if
* `bounds` is set.
* **Deprecated**: This parameter is deprecated as of May 2023. Use
* {@link google.maps.places.AutocompletionRequest.locationBias | locationBias} and
* {@link google.maps.places.AutocompletionRequest.locationRestriction | locationRestriction} instead.
*
* @returns {UsePlacePredictionsResult} An object containing:
* - `predictions`: An array of `google.maps.places.AutocompletePrediction` objects representing the predictions based on the input.
* - `isLoading`: A boolean indicating whether the autocomplete request is still loading.
* - `status`: The status of the request, which is a key of `google.maps.places.PlacesServiceStatus` or `null` if unavailable.
*/
declare const usePlacePredictions: ({ input, debounceMs, sessionToken, locationBias, locationRestriction, language, types, componentRestrictions, offset, origin, region, location, radius, bounds, }: UsePlacePredictions) => UsePlacePredictionsResult;
export { usePlacePredictions };