Фильтровать список мест, которые внутри картографической проекции?

#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);
            }
        }