高德地图SDK 总结记录

项目中用的高德地图SDK以前也用过不过没有这么多功能。现在开始整理记录一下,帮助自己也帮助他人。

1.展示所有的marker在屏幕上

 //创建一个 经纬度坐标矩形区域的生成器。
 LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder();
 //将经纬度转换成LatLng 并存入矩形区域
 LatLng latlng = new LatLng(39.123456, 116.123456);
 boundsBuilder.include(latlng);
// 60是距离边界的距离 根据情况而定  第一个参数:bounds屏幕上的一个区域  第二个参数:padding设置区域和view之间的空白距离,单位像素。这个值适用于区域的四个边。
 aMap.moveCamera(CameraUpdateFactory.newLatLngBounds(boundsBuilder.build(), 60));

2.删除marker

清除所有的marker官方给出的是

aMap.clear();

有时候不需要全部清除,只是需要删除某一个:

marker.remove() 或者 marker.destrory() 

想要删除首先要获取这个marker。如何在众多的merker里面获取呢?官方有一个api是:

aMap.getMapScreenMarkers();//获取屏幕上marker的集合。

你可以这样删除:

List<Marker> mapScreenMarkers = aMap.getMapScreenMarkers();
for (int i = 0; i < mapScreenMarkers.size(); i++) {
    Marker marker = mapScreenMarkers.get(i);
    if (null != marker.getObject()) {
        if (marker.getObject().equals(count)) {
            Log.d("TAGcat", "移除了:" + count);
            marker.remove();//移除当前Marker
        }
    }

}

marker.getObject().equals(count)是在创建marker的时候给marker设置一个属性。删除的时候找到这属性就可以。

到是这种方法只能删除屏幕上可见的marker,那么屏幕外的marker怎么删除呢?

首先咱们需要自己管理marker。创建一个集合

private List<Marker> markerList = new ArrayList<>();

来存放marker。当然在创建marker的时候需要设置一个属性,以便后面删除的时候可以找到。

marker.setObject(count);

在删除的时候就可以这样:

for (int i = markerList.size() - 1; i >= 0; i--) {
    if (markerList.get(i).getObject().equals(count)) {
        markerList.get(i).destroy();//移除当前Marker
        markerList.remove(i);//移除集合merker
    }
}

拿到marker对象移除,同时把自己管理marker的集合里面的marker也要移除。

猜你喜欢

转载自blog.csdn.net/qq_35698774/article/details/82463590
今日推荐