#java #android #google-maps #google-maps-android-api-2
#java #Android #google-карты #google-maps-android-api-2
Вопрос:
У меня есть места List
, которые содержат Hospital
object( List<Hospital>
). Объекты больницы содержат имя, широту, долготу и номер мобильного телефона в качестве атрибута. Если пользователь настраивает экран, я получаю текущую картографическую проекцию LatLngBounds
из той области, которую я получил. Итак, теперь я хочу отфильтровать больницы, которые внутри этого LatLngBounds
, как я могу реализовать getAvailableHospital()
метод? Спасибо!
Класс объекта больницы
Class Hospital
{
private String Name;
private String Latitude;
private String Longtitude;
private String PhoneNumber
}
Внутри фрагмента карты
@Override
public void onCameraIdle() {
LatLngBounds bounds = mMap.getProjection().getVisibleRegion().latLngBounds;
getAvailabelHospitals(bounds.northeast.latitude, bounds.northeast.longitude, bounds.southwest.longitude, bounds.southwest.latitude);
}
Ответ №1:
LatLngBounds имеет метод contains, который принимает LatLng и возвращает true, если LatLng находится в пределах границ.
Чтобы сгенерировать список больниц в пределах границ, проверьте, содержится ли каждый элемент в вашем списке в пределах границ. Например:
List<Hospital> inBounds = hospitals
.stream()
.filter(h -> bounds.contains(new LatLng(h.latitude(), h.longitude()))
.collect(Collectors.toList());
Комментарии:
1. Рад получить ответ от девушки-программиста!!! , Хорошего дня!!!
Ответ №2:
List<fshop> Rlist;
Rlist=new ArrayList<>();
for(fshop f : mlist)
{
LatLng point = new LatLng (Double.parseDouble(f.getLat()), Double.parseDouble(f.getLng()));
if(bounds.contains(point))
{
Rlist.add(f);
}
}