过滤地图投影中的哪些地点列表?

问题描述

我有一个List地点,其中包含Hospital个对象(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);
    }

解决方法

LatLngBounds有一个contains method,它接受​​LatLng,如果LatLng在范围之内,则返回true。

要生成边界内的医院列表,请检查列表中的每个项目是否都包含在边界内。例如:

List<Hospital> inBounds = hospitals
      .stream()
      .filter(h -> bounds.contains(new LatLng(h.latitude(),h.longitude()))
      .collect(Collectors.toList());
,
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);
            }
        }