address-complete
What are you looking for? Or how?
Address-complete provide unified way to perform address autocomplete using 3 geo-data providers:
- Google autocomplete + places API
- MapZen (Pelias) autocomplete API
- Yandex Geocoder
This library provides both basic address autocompete features,
and extended address details extraction to enable complex forms to shine.
Setup
npm install address-autocomplete
API
%provider_name%.search(term): Promise
%provider_name%.getDetails(term): Promise
MAPZEN all the things.
Nor google, nor yandex will NOT work in browser due to CORS limitations.
Use mapzen instead.
Example
there is live example at codesandbox - https://codesandbox.io/s/y382k7n61j
import mapzen, {configure} from 'address-autocomplete/mapzen';
import google, {configure} from 'address-autocomplete/google';
import yandex, {configure} from 'address-autocomplete/yandex';
configure('YOUR_API_KEY');
mapzen
.search('something')
.then(autocompletedData => async {
const fullData = await Promise.all(autocompletedData.map(mapzen.getDetails));
})
PS: To say they truth - you have to call getDetails only for Google API. All other API just mimic Google's behavior.
mapzen
.search('something')
.then(fullData => {
})
google
.search('something')
.then(fullData => {
})
Types
This library comes with TS and Flow definition, but anyway
Response from Google.search is AddressResponse
interface AddressResponse {
id: number,
text: string,
}
Response and any other API, or from google.getDetails
interface DetailedAddressResponse extends AddressResponse {
point: number[],
addressDetails: {
country: {
name: string,
code?: string
},
region: {
name: string,
code?: string,
},
locality: {
name: string
},
street: {
name: string,
house: string,
label: string,
},
postalcode: string
}
}
Country list
Hey! How to get list of countries or list of states for a country?
Just use iso3166-2-db
import listOfCountries from 'iso3166-2-db/countryList/UN/en';
address complete uses iso3166-2-db to extract iso3166-2 regions names from MapZen answers.
Which API to use?
I could recommend:
- MapZen - it is almost free, and high quality.
- Google is a standard defacto.
- Yandex, for Europe.
License
MIT