安卓百度地图显示地图上所有的点(Marker)

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

发布了87 篇原创文章 · 获赞 248 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/haojiagou/article/details/88046118