Restrict Places Autocomplete API to cities of specific country android

前端 未结 4 1872
余生分开走
余生分开走 2021-02-13 12:49

I am using PlaceAutocompleteApi from Play Services, what I want to do is restrict auto-complete to specific country & city only. Eg. All cities from lets say In

相关标签:
4条回答
  • 2021-02-13 13:17
    val sb = StringBuilder(PLACES_API_BASE + TYPE_AUTOCOMPLETE + OUT_JSON)
                sb.append("?key=$API_KEY")
                sb.append("&types=establishment")
                sb.append("&location=$locationLat,$LocationLng")
                sb.append("&radius=50000&strictbounds")
                sb.append("&input=" + URLEncoder.encode(input, "utf8"))
    

    This api will restrict the search to area.

    0 讨论(0)
  • 2021-02-13 13:29

    Filter results by country

    // Create Filter
    AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
        .setCountry("AU")
        .build();
    // Attach to autocomplete fragment / widget
    autocompleteFragment.setFilter(typeFilter);
    
    0 讨论(0)
  • 2021-02-13 13:30

    Here's a workaround (hack if you will) that I used. It utilizes (exploits) the fact that when converted to string, each response item is a comma separated string. Do the following steps before returning the result to getFilter().

    1. Get the suggestions into an ArrayList, call it returnedResults.
    2. Now traverse over returnedResults and in each iteration get each prediction into a string array using returnedResults.get(i).getFullText(xxx).toString().split(",").
    3. If the last element of this array is your country's name, insert it in a separate ArrayList variable, let's call it myResult.
    4. return myResult.

    The reason for using separate variables is because you might not be able to manipulate the original response list so easily. This approach works like a charm!

    Hope this helps.

    0 讨论(0)
  • 2021-02-13 13:39

    The way to do that is to add the country as the components parameter to the web service URL:

    StringBuilder sb = new StringBuilder(PLACES_API_BASE + TYPE_AUTOCOMPLETE + OUT_JSON);
    sb.append("?key=" + API_KEY);
    sb.append("&components=country:in");
    

    For cities you can use either the administrative_area_level_3 tag:

    sb.append("&components=administrative_area_level_3:bengaluru");
    

    or alternatively the locality tag:

    sb.append("&components=locality:redmond");
    

    References:

    1. Geocoding API.

    2. Address Types and Component Types.

    3. Google Place API Autocomplete Service in Android Application.

    0 讨论(0)
提交回复
热议问题