2015-01-01 15 views
7

私はGoogle Place APIでテキスト検索リクエストを処理しています。特定の国の結果をフィルタリングする方法が不思議です。方法はありますか?Google place api:国別検索フィルタ

私がしようとしているのは、結果を国別にフィルタリングしてapiを呼び出し、phpでjson結果を管理することです。

だから、これは私が&国=私たちのようなパラメータを追加したいクエリ

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?私はすでにstackoverflowの答えをチェックし、私の質問には何も答えません。とにかく、詳細情報を提供するために編集します – 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

質問は 'textSearch'サービスについてです。オートコンプリートではありません。 – 10basetom

0
for API : country:in 

AutocompleteFilter typeFilter = new AutocompleteFilter.Builder() 
     .setCountry("IN") 
     .build();