高德地图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也要移除。

3.去除logo

 aMap.getUiSettings().setLogoBottomMargin(-50)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大不懂

码字不易,一块也是爱,么么

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值