情况一: 假设我用这样的蓝色标记填充 map :
for (LatLng latLng : latLngList) {
mMap.addMarker(new MarkerOptions()
.position(latLng)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
}
单击标记后,我希望将 map 上每个标记的颜色更改为黄色。我该怎么做?
目前,我只能使用这种方法更改我点击的特定标记的颜色:
@Override
public boolean onMarkerClick(Marker marker) {
//change marker colour to yellow
marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW));
return false;
}
情况二: 假设我有 2 种标记,蓝色和红色,由两个不同的经纬度列表创建。
//create blue markers
for (LatLng latLng : latLngListBlue) {
mMap.addMarker(new MarkerOptions()
.position(latLng)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
}
//create red markers
for (LatLng latLng : latLngListRed) {
mMap.addMarker(new MarkerOptions()
.position(latLng)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
}
单击红色 标记时,我希望所有蓝色 标记都变为黄色。我该怎么做?
最佳答案
您需要保留对标记的引用,然后在需要时修改它们。
List<Marker> mMarkers = new Arraylist<Marker>();
for (LatLng latLng : latLngList) {
Marker marker = mMap.addMarker(new MarkerOptions()
.position(latLng)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
mMarkers.add(marker);
}
然后
@Override
public boolean onMarkerClick(Marker marker) {
//change marker colour to yellow
marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW));
for(Marker otherMarker : mMarkers) {
otherMarker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW));
}
return false;
}
第二种情况的类似解决方法
关于java - 如何在 android 中同时更改 map 上所有标记的颜色?如何只更改部分标记的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43550001/