2015-10-15 3 views
0

Я реализую функцию поиска на картах google. Для этого я использую Places.GeoDataApi для google.Android Google Map Автозаполнение GeoDataAPI дает определенные ограничения

Но проблема, с которой я столкнулся, это поиск, основанный на значении LatLanBounds. В настоящее время я передаю сидней конкретные границы в нижнем api, поэтому во время поиска его предвзято относились к этим границам и сначала проверяли конкретные места синдикации.

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 или кому-то еще с похожими проблемами.

Ответ на главный вопрос довольно straighforward: Создать новый LatLngBounds (docs) объекта каждый раз, когда вы получаете информацию о местоположении пользователя и передать этот объект в качестве параметра .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), например, в Бразилии, и вам нужно найти границы этого места. Чтобы сделать это, я хотел бы использовать основные Google 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.