我有一个DefaultClusterRenderer类和我自己的ClusterItem,我在地图上用它作为标记。我正在使用MarkerOptions设置标题和片段,因此我可以在onInfoWindowClick事件上抓取它们。我想开始一个新的Activity,取决于用户点击了哪个infoWindow,但是我无法为MarkerOptions添加标签,所以我无法通过Marker参数在我的onInfoWindowClick方法中获取标签。
我正在寻找一个很好的解决方案,为每个ClusterItem添加一个id,并通过onInfoWindowClick中的Marker获取id。
public class OwnClusterRendering extends DefaultClusterRenderer<GeoPoint> {
private GoogleMap map;
public OwnClusterRendering(Context context, GoogleMap map, ClusterManager<GeoPoint> clusterManager) {
super(context, map, clusterManager);
this.map = map;
}
protected void onBeforeClusterItemRendered(GeoPoint geoPoint, MarkerOptions markerOptions) {
markerOptions.icon(geoPoint.getIcon());
markerOptions.snippet(geoPoint.getSnippet());
markerOptions.title(geoPoint.getTitle());
super.onBeforeClusterItemRendered(geoPoint, markerOptions);
}
}
MyCustomWindowAdapter:
@Override
public void onInfoWindowClick(Marker marker) {
Log.d("test", marker.getTitle());
Log.d("test", marker.getSnippet());
Log.d("test", marker.getId());
Log.d("test", String.valueOf(marker.getTag()));
// Intent intent = new Intent(context, StoneInfoSliderActivity.class);
// context.startActivity(intent);
}
答案 0 :(得分:1)
使用DefaultClusterRenderer&lt;&gt;
中的以下方法解决它@Override
protected void onClusterItemRendered(GeoPoint geoPoint, Marker marker) {
marker.setTag(geoPoint.getId());
super.onClusterItemRendered(geoPoint, marker);
}