由于公司项目中有这样的需求,需要一键显示当前项目中所有的marker点。最开始没有仔细看百度地图的api,所以自己想解决办法。开始的想法是:获取到所有点的最大经度纬度以及最小经度纬度,然后通过这是比例尺来进行设置地图的缩放等级,但是失败了。在网上搜索找到了下面的方法。
final List<LatLng> points = new ArrayList<>();
if (pointsList != null && pointsList.size() > 0) {
for (int i = 0; i < pointsList.size(); i++) {
points.add(new LatLng(Double.valueOf(pointsList.get(i).getLat()), Double.valueOf(pointsList.get(i).getLon())));
}
//将所有点的经纬度放在一个集合中。
LatLngBounds.Builder builder1 = new LatLngBounds.Builder();
for (LatLng p : points) {
builder1 = builder1.include(p);
}
//
LatLngBounds latlngBounds = builder1.build();
/*MapStatusUpdate u = MapStatusUpdateFactory.newLatLngBounds(latlngBounds, mMapView.getWidth(), mMapView.getHeight());*/
MapStatusUpdate us = MapStatusUpdateFactory.newLatLngBounds(builder1.build());
MapStatusUpdateFactory.newLatLngBounds(latlngBounds, mMapView.getWidth(), mMapView.getHeight());
mBaiduMap.animateMapStatus(us);
}
直接将所有的点放在集合中,然后循环遍历放进builder.include()方法中,之后构建出LatLngBounds,最后创建MapStatusUpdate对象,传入LatLngBounds以及当前MapView的宽度和高度即可。