I'm using Google's Geocoder to find lat lng coordinates for a given address.
var geocoder = new google.maps.Geocoder(); geocoder.geocode( { 'address': address, 'region': 'uk' }, function(results, status) { if(status == google.maps.GeocoderStatus.OK) { lat: results[0].geometry.location.lat(), lng: results[0].geometry.location.lng() });
address
variable is taken from an input field.
I want to search locations only in UK. I thought that specifying 'region': 'uk'
should be enough but it's not. When I type in "Boston" it's finding Boston in US and I wanted the one in UK.
How to restrict Geocoder to return locations only from one country or maybe from a certain lat lng range?
Thanks
The following code will get the first matching address in the UK without the need to modify the address.
var geocoder = new google.maps.Geocoder(); geocoder.geocode( { 'address': address, 'region': 'uk' }, function(results, status) { if(status == google.maps.GeocoderStatus.OK) { for (var i=0; i<results.length; i++) { for (var j=0; j<results[i].address_components.length; j++) { if ($.inArray("country", results[i].address_components[j].types) >= 0) { if (results[i].address_components[j].short_name == "GB") { return_address = results[i].formatted_address; return_lat = results[i].geometry.location.lat(); return_lng = results[i].geometry.location.lng(); ... return; } } } } });
Use componentRestrictions attribute:
geocoder.geocode({'address': request.term, componentRestrictions: {country: 'GB'}}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With