I am currently using the Google Maps Places Autocomplete Javascript API to let users select a location by searching for the address or establishment name. Example code:
autocomplete = new google.maps.places.Autocomplete(input);
google.maps.event.addListener(autocomplete, 'place_changed', function () {
console.log(autocomplete.getPlace());
});
This gets the following data.
{
"address_components":[
{
"long_name":"1600",
"short_name":"1600",
"types":[
"street_number"
]
},
{
"long_name":"Amphitheatre Parkway",
"short_name":"Amphitheatre Pkwy",
"types":[
"route"
]
},
{
"long_name":"Mountain View",
"short_name":"Mountain View",
"types":[
"locality",
"political"
]
},
{
"long_name":"Santa Clara County",
"short_name":"Santa Clara County",
"types":[
"administrative_area_level_2",
"political"
]
},
{
"long_name":"California",
"short_name":"CA",
"types":[
"administrative_area_level_1",
"political"
]
},
{
"long_name":"United States",
"short_name":"US",
"types":[
"country",
"political"
]
},
{
"long_name":"94043",
"short_name":"94043",
"types":[
"postal_code"
]
}
],
"adr_address":"<span class=\"street-address\">1600 Amphitheatre Pkwy</span>, <span class=\"locality\">Mountain View</span>, <span class=\"region\">CA</span> <span class=\"postal-code\">94043</span>, <span class=\"country-name\">USA</span>",
"formatted_address":"1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
"formatted_phone_number":"(650) 253-0000",
"geometry":{
"location":{
"lat":37.4219999,
"lng":-122.08405749999997
},
"viewport":{
"south":37.4206993697085,
"west":-122.0847981802915,
"north":37.4233973302915,
"east":-122.08210021970848
}
},
"icon":"https://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
"id":"3a936e96ddcb18b4fa8a2974ebc8876c3108fef2",
"international_phone_number":"+1 650-253-0000",
"name":"Googleplex",
"photos":[
{
"height":2992,
"html_attributions":[
"<a href=\"https://maps.google.com/maps/contrib/103819965142360016765/photos\">Donald Polak</a>"
],
"width":4000
},
{
"height":1080,
"html_attributions":[
"<a href=\"https://maps.google.com/maps/contrib/113986172004889046503/photos\">Gil Carlos</a>"
],
"width":1620
},
{
"height":810,
"html_attributions":[
"<a href=\"https://maps.google.com/maps/contrib/112693353017475869362/photos\">spoorthi Shres</a>"
],
"width":1080
},
{
"height":2448,
"html_attributions":[
"<a href=\"https://maps.google.com/maps/contrib/112322727489597014623/photos\">Inmook Lee</a>"
],
"width":3264
},
{
"height":480,
"html_attributions":[
"<a href=\"https://maps.google.com/maps/contrib/100130762972482716067/photos\">JL N</a>"
],
"width":640
},
{
"height":2988,
"html_attributions":[
"<a href=\"https://maps.google.com/maps/contrib/112927044171481932986/photos\">Chamnan Muon</a>"
],
"width":5312
},
{
"height":2448,
"html_attributions":[
"<a href=\"https://maps.google.com/maps/contrib/112947157334846208308/photos\">Aslam Mohammed</a>"
],
"width":3264
},
{
"height":3024,
"html_attributions":[
"<a href=\"https://maps.google.com/maps/contrib/111560452835833490678/photos\">Emprendedor ypunto</a>"
],
"width":4032
},
{
"height":2268,
"html_attributions":[
"<a href=\"https://maps.google.com/maps/contrib/112821956543329496349/photos\">Remco Buddelmeijer</a>"
],
"width":4032
},
{
"height":3024,
"html_attributions":[
"<a href=\"https://maps.google.com/maps/contrib/112778094015197614835/photos\">Thais Ferreira Curi</a>"
],
"width":4032
}
],
"place_id":"ChIJj61dQgK6j4AR4GeTYWZsKWw",
"plus_code":{
"compound_code":"CWC8+Q9 Mountain View, California, United States",
"global_code":"849VCWC8+Q9"
},
"rating":4.4,
"reference":"CmRRAAAACSrJEHCvJp1k1sNsnP1YvwaVcHxCPCdgt9vF-dLxsyUO-VoVoJ44QUHBeay_xRA29z7r9M_Pl-GCRFke9AbTjR7uOQg6ujPCc2gI3yaVlTVIBOAfxlamFaYbwzInWZDYEhA6V8crd3XJ8w-LHYNjzm2RGhSjYXAaGOf9ewF1emkXjxFJu-tO7g",
"reviews":[
{
"author_name":"Grand Palais Beachside",
"author_url":"https://www.google.com/maps/contrib/117946213840380407904/reviews",
"language":"en",
"profile_photo_url":"https://lh3.googleusercontent.com/-f_xOeqEuQlY/AAAAAAAAAAI/AAAAAAAAAAA/AAnnY7oSEuVFn-pDYQWJEJTa0Ol6FC6oLw/s128-c0x00000000-cc-rp-mo/photo.jpg",
"rating":5,
"relative_time_description":"in the last week",
"text":"How would you rate your experience with The Marble Man? \nThe experience was excellent, totally professional, provided great advice on work timings and even when running a little late had the professionalism to advise us and that was very much appreciated.\nDo you have any suggestions on how we can improve in any areas?\nNot be so busy that we had to wait a month (approx.) but no in all honesty great service very happy but in running a resort sometimes these in the future need to be acted on asap as they are unable to be let depending on the repair required.\nHow was the completed job?\nExcellent\nHow did you find our job and inspection technicians and office team?\nExcellent\nWe would 100% recommend the team at Marble Man to all.",
"time":1534208819
},
{
"author_name":"BRYAN HALLIGAN",
"author_url":"https://www.google.com/maps/contrib/105850575620900701772/reviews",
"language":"en",
"profile_photo_url":"https://lh5.googleusercontent.com/-qlpyjtK9t8E/AAAAAAAAAAI/AAAAAAAAAAc/euGPm7V8gRA/s128-c0x00000000-cc-rp-mo/photo.jpg",
"rating":1,
"relative_time_description":"in the last week",
"text":"
You can use AutocompleteOptions object in order to define fields that you want to see in details responses. AutocompleteOptions has a
fields
propertySo, you can change autocomplete initialization to the following form
I hope this helps!
Just call
setField()
after instantiating the autocomplete object, for example:Nice try Google. After the hefty price change, instead of deprecating the APIs and make it obvious the requests will cost a fortune, they silently allowed the current code to request everything, thus profiting from the sudden charge increase.
Nice move but it's already backfiring: Will remove all the Google services from my systems. OpenStreetMap and ArcGIS and Mapbox are much more affordable
https://developers.google.com/places/web-service/usage-and-billing
You can check all the fields here