项目中用的高德地图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也要移除。
3.去除logo
aMap.getUiSettings().setLogoBottomMargin(-50)