由于公司项目中有这样的需求,需要一键显示当前项目中所有的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的宽度和高度即可。