java - 如何在 android 中同时更改 map 上所有标记的颜色?如何只更改部分标记的颜色?

标签 java android google-maps-markers marker

情况一: 假设我用这样的蓝色标记填充 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/

相关文章:

android - 通过将标记保持在中心来移动 map

javascript - 使用 javascript 删除谷歌地图上的许多标记之一

php - Google map API - 标记、MySQL

java - 为 Java 寻找合适的 Git 库

java - 使用子字符串会产生 StringIndexOutOfBoundsException : String index out of range: -1 exception

java - 解析20年后的日期

android - 如何从相机 Intent 中捕捉视频?

java - 如何加密文件并将其保存在 firebase 存储中?

android - 在 android 中自定义 google maps V2 的配色方案

android - 如何在 AutoCompleteTextView 中填充数据?