Ограничить автозаполнение 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