问题描述
我有一个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);
}
}