簡體   English   中英

將地方自動填充API限制為特定國家/地區Android的城市

[英]Restrict Places Autocomplete API to cities of specific country android

我正在使用Play服務中的PlaceAutocompleteApi ,我想要做的是將自動完成限制到特定的國家/地區和城市。 例如。 所有城市都只能說是印度。 我使用AutocompleteFilter這樣做但我不知道在哪里指定我想限制的國家/地區。

這是我的代碼

        List<Integer> autocompleteFilter = new ArrayList<>();
//        autocompleteFilter.add(Place.TYPE_COUNTRY);
//        autocompleteFilter.add(Place.TYPE_LOCALITY);


        mAdapter = new PlaceAutocompleteAdapter(mContext,R.layout.layout_location_text,
                mGoogleApiClient, BOUNDS, AutocompleteFilter.create(autocompleteFilter));
        mTxtLocation.setAdapter(mAdapter);

        mTxtLocation.setOnItemClickListener(mAutocompleteClickListener);

有什么想法嗎?

這樣做的方法是將國家/地區作為components參數添加到Web服務URL:

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

對於城市,您可以使用administrative_area_level_3標記:

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

或者locality標記:

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

參考文獻:

1. 地理編碼API

2. 地址類型和組件類型

3. Android應用中的Google Place API自動填充服務

這是我使用過的解決方法(如果你願意的話)。 它利用(利用)這樣一個事實:當轉換為字符串時,每個響應項都是逗號分隔的字符串。 在將結果返回到getFilter()之前,請執行以下步驟。

  1. 將建議輸入ArrayList ,將其命名為returnedResults
  2. 現在遍歷過returnedResults和在每次迭代中使用獲得的每個預測到一個字符串數組returnedResults.get(i).getFullText(xxx).toString().split(",")
  3. 如果此數組的最后一個元素是您所在國家/地區的名稱,請將其插入單獨的ArrayList變量中,我們將其myResult
  4. 返回myResult

使用單獨變量的原因是您可能無法輕松操作原始響應列表。 這種方法就像一個魅力!

希望這可以幫助。

按國家/地區篩選結果

// Create Filter
AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
    .setCountry("AU")
    .build();
// Attach to autocomplete fragment / widget
autocompleteFragment.setFilter(typeFilter);
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"))

此api將搜索限制為區域。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM