Ограничить автозаполнение Google Place в пределах города

В настоящее время я работаю над ресторанным приложением, где люди могут делать фотографии и отмечать их в Google Place. Однако, поскольку мое приложение предназначено для развивающихся стран, таких как Индия, Google Места на карте не очень хорошо определены. Поэтому я разрешаю пользователям искать место, которое, по их мнению, более точно отражает местоположение их любимого ресторана. я использую PlaceAutocompleteFragment Фрагмент API Google Places для Android в качестве механизма ввода для поиска пользователями своего любимого соединения. Тем не менее, чтобы им было легче выбирать, я хочу, чтобы результаты были смещены в сторону конкретного региона, в частности, города, из которого они выполняют поиск.

Тем не менее, как я могу получить город текущего местоположения пользователя? Я могу получить широты, долготы. Но как мне найти город, соответствующий определенному лату и лонгу?

Нужно ли менять геокодирование адреса из лат, долго, чтобы получить адрес? Но если я это сделаю, то как мне получить название города? И после этого, что будет правильным положением в PlaceAutocompleteFragment для установки фильтра 'city'?

Так что было бы самым простым способом сделать это? Есть идеи? Ценить это.

2 ответа

Решение
autocompleteFragment.setBoundsBias(new LatLngBounds(southwestLatLng, northeastLatLng));

setBoundsBias() занимает LatLngBounds который состоит из двух LatLng объекты, представляющие юго-западную и северо-восточную точки ограничительного прямоугольника. Похоже, что API Google не предоставляют метод определения границ города, поэтому вам придется выяснить, какой радиус допустим для поиска, и вычесть / добавить из текущей широты и долготы пользователя, чтобы получить две точки ограничивающий прямоугольник. См.: Вычисление ограничительной рамки на определенном расстоянии от координаты широты / долготы в Java

Как только вы получите address форма Geocoder Вы можете получить название города из самого адреса. Надеюсь, приведенный ниже код поможет вам в этом.

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
 List<Address> addresses = geocoder.getFromLocation(MyLat, MyLong, 1);
 String cityName = addresses.get(0).getAddressLine(0);
 String stateName = addresses.get(0).getAddressLine(1);
 String countryName = addresses.get(0).getAddressLine(2);

Более подробный пример карты Google можно найти по ссылкам ниже: http://www.demoadda.com/demo/android/load-googlemap_107

Другие вопросы по тегам