【问题标题】:MarkerOptions .tag not availableMarkerOptions .tag 不可用
【发布时间】:2017-09-09 22:35:18
【问题描述】:

我有一个 DefaultClusterRenderer 类和我自己的 ClusterItem,我将其用作地图上的标记。我正在使用 MarkerOptions 设置标题和 sn-p,因此我可以在我的 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);
}

【问题讨论】:

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


    【解决方案1】:

    使用 DefaultClusterRenderer 中的以下方法解决了它

    @Override
    protected void onClusterItemRendered(GeoPoint geoPoint, Marker marker) {
        marker.setTag(geoPoint.getId());
        super.onClusterItemRendered(geoPoint, marker);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      相关资源
      最近更新 更多