Android高德地图替换Marker的图标,不是重叠
时间: 2024-02-23 17:59:51 浏览: 65
Android 高德地图自定义点聚合marker图片及Overlay点击选中功能
3星 · 编辑精心推荐
要替换 Android 高德地图 SDK 中 Marker 的图标,可以先通过`remove`方法将原来的 Marker 从地图上移除,然后再添加一个新的 Marker,例如:
```java
Marker oldMarker = aMap.addMarker(new MarkerOptions()
.position(new LatLng(39.90923, 116.397428))
.icon(BitmapDescriptorFactory.fromResource(R.drawable.old_marker)));
// 先将旧的 Marker 从地图上移除
oldMarker.remove();
// 添加一个新的 Marker,并设置新的图标
Marker newMarker = aMap.addMarker(new MarkerOptions()
.position(oldMarker.getPosition())
.icon(BitmapDescriptorFactory.fromResource(R.drawable.new_marker)));
// 将新的 Marker 设置为当前 Marker,以便后续操作
currentMarker = newMarker;
```
其中`currentMarker`是一个成员变量,用于保存当前的 Marker 对象。
如果需要动态修改 Marker 的图标,可以通过上述方法不断替换 Marker 的图标,例如:
```java
BitmapDescriptor icon1 = BitmapDescriptorFactory.fromResource(R.drawable.marker1);
BitmapDescriptor icon2 = BitmapDescriptorFactory.fromResource(R.drawable.marker2);
// 添加一个初始的 Marker,并设置初始图标
Marker currentMarker = aMap.addMarker(new MarkerOptions()
.position(new LatLng(39.90923, 116.397428))
.icon(icon1));
// 切换图标
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// 先将当前的 Marker 从地图上移除
currentMarker.remove();
// 添加一个新的 Marker,并设置新的图标
Marker newMarker = aMap.addMarker(new MarkerOptions()
.position(currentMarker.getPosition())
.icon(icon2));
// 将新的 Marker 设置为当前 Marker,以便后续操作
currentMarker = newMarker;
}
}, 2000);
```
这样就可以在2秒钟后将 Marker 的图标切换为另外一个资源文件了,且不会重叠。
阅读全文