Google place api: Place Search by country

I’m working on the Google Place API with text search queries and I’m wondering how to filter the results for a specific country. Is there any way?

What I'm trying to do is call api with results filtered by country and then manage json result with php.

So this is a kind of request

https://maps.googleapis.com/maps/api/place/textsearch/json?query=pizza&sensor=true&key=mykey 

I want to add a parameter like & country = us, but it doesn't seem to exist.

thanks

+7
google-maps google-places-api
source share
3 answers

Pass the country code as a parameter to componentRestrictions in the parameters. Then pass these parameters as a parameter to google.maps.places.Autocomplete

eg.

 var options = { componentRestrictions: {country: 'in'} }; autocomplete = new google.maps.places.Autocomplete(input, options); 
0
source share
 for API : country:in AutocompleteFilter typeFilter = new AutocompleteFilter.Builder() .setCountry("IN") .build(); 
0
source share
 <script> function initMap() { var minZoomLevel = 7; var map = new google.maps.Map(document.getElementById('map'), { zoom: minZoomLevel, center: {lat: 24.4667, lng: 54.52901} }); // Bounds for North America var allowedBounds = new google.maps.LatLngBounds( new google.maps.LatLng(24.4667, 54.3667) ); // Listen for the dragend event google.maps.event.addListener(map, 'dragend', function() { if (allowedBounds.contains(map.getCenter())) return; // Out of bounds - Move the map back within the bounds var c = map.getCenter(), x = c.lng(), y = c.lat(), maxX = allowedBounds.getNorthEast().lng(), maxY = allowedBounds.getNorthEast().lat(), minX = allowedBounds.getSouthWest().lng(), minY = allowedBounds.getSouthWest().lat(); if (x < minX) x = minX; if (x > maxX) x = maxX; if (y < minY) y = minY; if (y > maxY) y = maxY; map.setCenter(new google.maps.LatLng(y, x)); }); // Limit the zoom level google.maps.event.addListener(map, 'zoom_changed', function() { if (map.getZoom() < minZoomLevel) map.setZoom(minZoomLevel); }); var input = ( document.getElementById('pac-input') ); var types = document.getElementById('type-selector'); map.controls[google.maps.ControlPosition.TOP_LEFT].push(input); map.controls[google.maps.ControlPosition.TOP_LEFT].push(types); var options = { componentRestrictions: {country: 'AE'} }; var autocomplete = new google.maps.places.Autocomplete(input,options); autocomplete.bindTo('bounds', map); var infowindow = new google.maps.InfoWindow(); var marker = new google.maps.Marker({ map: map, anchorPoint: new google.maps.Point(0, -29) }); autocomplete.addListener('place_changed', function() { infowindow.close(); marker.setVisible(false); var place = autocomplete.getPlace(); if (!place.geometry) { window.alert("Autocomplete returned place contains no geometry"); return; } // If the place has a geometry, then present it on a map. if (place.geometry.viewport) { map.fitBounds(place.geometry.viewport); } else { map.setCenter(place.geometry.location); map.setZoom(17); // Why 17? Because it looks good. } marker.setIcon(({ url: place.icon, size: new google.maps.Size(71, 71), origin: new google.maps.Point(0, 0), anchor: new google.maps.Point(17, 34), scaledSize: new google.maps.Size(35, 35) })); marker.setPosition(place.geometry.location); marker.setVisible(true); var address = ''; if (place.address_components) { address = [ (place.address_components[0] && place.address_components[0].short_name || ''), (place.address_components[1] && place.address_components[1].short_name || ''), (place.address_components[2] && place.address_components[2].short_name || '') ].join(' '); } infowindow.setContent('<div><strong>' + place.name + '</strong><br>' + address); infowindow.open(map, marker); }); // Sets a listener on a radio button to change the filter type on Places // Autocomplete. function setupClickListener(id, types) { var radioButton = document.getElementById(id); radioButton.addEventListener('click', function() { autocomplete.setTypes(types); }); } setupClickListener('changetype-all', []); setupClickListener('changetype-address', ['address']); setupClickListener('changetype-establishment', ['establishment']); setupClickListener('changetype-geocode', ['geocode']); } </script> <script src="https://maps.googleapis.com/maps/api/js?key=KEY&signed_in=true&libraries=places&callback=initMap" async defer></script> 
-one
source share

All Articles