【发布时间】:2021-04-29 21:18:21
【问题描述】:
我有这个应用程序,我在谷歌地图上显示附近药店的标记。当我单击标记时,我希望标记改变颜色。当我单击其他标记时,它应该将先前标记的颜色更改为默认值,并将更改新标记的颜色。 这是随机工作的,我的意思是有时标记颜色会发生变化,有时它会保持默认颜色。
Marker lastClicked;
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in user's location
// User's location is taken from the postal code entered
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
if(lastClicked != null){
lastClicked.setIcon(BitmapDescriptorFactory.defaultMarker());
}
marker.setIcon(getMarkerIcon(getResources().getColor(R.color.app_color)));
lastClicked=marker;
return false;
}
});
}
getMarkerIcon() 方法的代码是:
public BitmapDescriptor getMarkerIcon(int color){
float[] hsvFloat = new float[3];
Color.colorToHSV(color, hsvFloat);
return BitmapDescriptorFactory.defaultMarker(hsvFloat[0]);
}
注意:我在每一行都添加了调试器,看看哪部分代码没有运行,奇怪的是当调试器来到这一行时
marker.setIcon(getMarkerIcon(getResources().getColor(R.color.app_color)));
它正在编译,但有时它不会改变标记的颜色。
【问题讨论】:
-
请添加更多源代码:1) 带有
lastClicked声明和更改,2)getMarkerIcon()实现。 -
@AndriiOmelchenko 我编辑并添加了 getMarkerIcon() 的代码。和 lastClicked 声明。
-
似乎您添加的代码中的所有内容都可以。尝试仔细检查标记创建部分可能是添加了相同坐标的多个标记。
-
@AndriiOmelchenko 非常感谢您的建议,在您发表评论后,我检查了我的列表并比较了几个标记,我发现很少有标记具有完全相同的 lat 和 lng,因此标记重叠.
标签: android android-studio google-maps google-maps-markers