MarkerOptions .tag不可用

时间:2017-04-13 17:34:26

标签: android google-maps-markers google-maps-android-api-2

我有一个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);
}

1 个答案:

答案 0 :(得分:1)

使用DefaultClusterRenderer&lt;&gt;

中的以下方法解决它
@Override
protected void onClusterItemRendered(GeoPoint geoPoint, Marker marker) {
    marker.setTag(geoPoint.getId());
    super.onClusterItemRendered(geoPoint, marker);
}