2015-10-15 23 views
0

我正在谷歌地圖上實現搜索功能。爲此,我使用Google的Places.GeoDataApi。安卓谷歌地圖自動完成GeoDataAPI給出了具體的結果

但我面臨的問題是它正在基於LatLanBounds值進行搜索。 目前我在下面的API中傳遞悉尼特定的邊界,所以在搜索時它偏向這些邊界並首先檢查syndey特定位置。

private static final LatLngBounds mBounds= new LatLngBounds(
     new LatLng(-34.041458, 150.790100), new LatLng(-33.682247, 151.383362)); 

     PendingResult<AutocompletePredictionBuffer> results = 
       Places.GeoDataApi 
       .getAutocompletePredictions(mGoogleApiClient, constraint.toString(), 
         mBounds, mPlaceFilter); 

根據我的要求,上面的API應該返回的是靠近地區的結果。例如,如果用戶在印度並搜索某些內容,則應優先返回與印度相關的建議,如果巴西的用戶嘗試搜索API,則應返回與巴西相關的建議。我不知道如何根據用戶當前的國家或位置傳遞動態LatLng邊界值。

您的幫助將非常感激。

+0

誰能告訴我如何找到巴西的LatLngBounds值? – PKhurana

回答

-1

這是個月前的問題,但我希望我的回答能幫助OP或其他有類似問題的人。

的主要問題的答案非常簡單明瞭: 創建新的LatLngBoundsdocs)每次獲取用戶的位置信息的時間和對象通過這個對象的.getAutocompletePredictions參數:

LatLng sw = new LatLng(SOUTH_WEST_LAT, SOUTH_WEST_LNG); 
LatLng ne = new LatLng(NORTH_EAST_LAT, NORTH_EAST_LNG); 

LatLngBounds bounds = new LatLngBounds(sw, ne); 

Places.GeoDataApi.getAutocompletePredictions(mGoogleApiClient, constraint, bounds, null); 

這兩點,西南和東北是廣場對面的角落,使用戶的位置周圍的區域。這是約束。

關於你的第二個問題,在評論中。我想你有你的用戶位置(例如來自GPS),例如在巴西,你需要找到這個位置的邊界。 要做到這一點,我會用基本的谷歌Places API的調用(你可以嘗試一下在你的瀏覽器):

https://maps.googleapis.com/maps/api/geocode/json?address=Brazil 

,將返回您JSON格式對巴西的數據與現場它:

"geometry" : { 
    "bounds" : { 
     "northeast" : { 
     "lat" : 42.1282269, 
     "lng" : -87.7108162 
     }, 
     "southwest" : { 
      "lat" : 42.0886089, 
      "lng" : -87.7708629 
     } 
    }, 
    ... 
} 

如您所見,這些是巴西所在的廣場的東北和西南邊界。您現在可以將它們放入LatLngBounds對象中。

相關問題