2015-01-01 19 views
7

मैं टेक्स्ट खोज अनुरोधों के साथ Google Place API पर काम कर रहा हूं और मैं सोच रहा हूं कि किसी विशिष्ट देश के परिणाम कैसे फ़िल्टर करें। क्या उधर रास्ता है?Google स्थान एपीआई: देश द्वारा स्थान खोज फ़िल्टर

जो मैं करने की कोशिश कर रहा हूं वह एपीआई को देश द्वारा फ़िल्टर किए गए परिणामों के साथ कॉल करें और फिर जेएस परिणाम पीएचपी के साथ प्रबंधित करें।

तो, यह क्वेरी

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

का एक प्रकार मैं & देश = हमारे जैसे एक पैरामीटर जोड़ना चाहते है, लेकिन ऐसा लगता है कि यह मौजूद नहीं है।

धन्यवाद विकल्पों में componentRestrictions में पैरामीटर के रूप

+0

[देश से Google स्थल AutocompleteService छानने] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/14659008/google-places-autocompleteservice-filtering-by-country) – geocodezip

+0

क्यों -1? मैंने पहले से ही स्टैक ओवरफ्लो में उत्तरों की जांच की है और कुछ भी मेरे प्रश्न का उत्तर नहीं देता है। किसी भी तरह, मैं इसे अधिक जानकारी प्रदान करने के लिए संपादित करता हूं – Luca

+0

https://developers.google.com/places/documentation/autocomplete#place_autocomplete_requests विकल्प घटक पैरामीटर – geocodezip

उत्तर

0

पास देश कोड। फिर google.maps.places.Autocomplete

जैसे पैरामीटर के रूप में इस विकल्प को पास करें।

var options = { 
    componentRestrictions: {country: 'in'} 
}; 

autocomplete = new google.maps.places.Autocomplete(input, options); 
+2

प्रश्न टेक्स्ट खोज के बारे में है, न कि स्वतः पूर्ण। हालांकि, यह किसी और के लिए उपयोगी हो सकता है। – Evan

-1
<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's 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> 
+2

प्रश्न 'टेक्स्टशर्च' सेवा के बारे में है, स्वतः पूर्ण नहीं। – 10basetom

0
for API : country:in 

AutocompleteFilter typeFilter = new AutocompleteFilter.Builder() 
     .setCountry("IN") 
     .build(); 
संबंधित मुद्दे