在我的
Android项目中,我使用
android-maps-utils库将聚类应用于地图视图上的一堆标记.只要点击一个标记,我就会通过
onClusterItemClick
收到通知,这样我就可以采取行动了.
public interface OnClusterItemClickListener<T extends ClusterItem> { public boolean onClusterItemClick(T item); }
现在我想让用户知道点击了哪个标记.简单的视觉反馈将是改变标记图标的(颜色).可以通过MarkerOptions对象设置图标,该对象可以在onBeforeClusterItemRendered(T item,MarkerOptions markerOptions)
中访问,例如:
markerOptions.icon( BitmapDescriptorFactory.defaultMarker( BitmapDescriptorFactory.HUE_YELLOW));
如果我可以访问Marker对象本身,例如onMarkerClick (Marker marker)
,我可以通过setIcon更改图标.
如何更改点击的标记图标?
有关
> How to highlight the selected cluster item?
> Android Google Map V2: How to change previous clicked marker’s icon when clicked on another marker
解决方法
我注意到DefaultClusterRenderer提供了检索与ClusterItem关联的Marker对象的方法.因为我使用自定义渲染器,所以我能够访问所需的Marker对象,如下所示:
mSelectedMarker = mCustomClusterItemRenderer.getMarker(mSelectedClusterItem);
这允许我更改onClusterItemClick()中的图标:
private void updateSelectedMarker() { if (mSelectedMarker != null) { mSelectedMarker.setIcon( BitmapDescriptorFactory.defaultMarker( BitmapDescriptorFactory.HUE_YELLOW)); } }