【发布时间】:2014-11-30 20:54:58
【问题描述】:
我正在使用 google maps api 对标记进行聚类。因为我想要一个自定义图标作为标记,所以我创建了一个自定义渲染器(扩展 DefaultClusterRenderer)。在onBeforeClusterItemRendered 我正在设置所需的图标。
问题是我现在想创建一个自定义infowindow。如果我这样做:
googleMap.setInfoWindowAdapter(new InfoWindowAdapter() {
// Use default InfoWindow frame
@Override
public View getInfoWindow(Marker arg0) {
return null;
}
// Defines the contents of the InfoWindow
@Override
public View getInfoContents(Marker arg0) {
}
});
在getInfoContents 我可以自定义信息窗口。问题是传递的参数是Marker 类型。因为我使用的是聚类,所以我使用了一个自定义标记 (MyMarker) 作为其中的信息。
我不能将Marker 转换为MyMarker,也不能将参数更改为MyMarker。我不想这样做来提取信息。
我怎样才能保持集群(在这里我可以访问MyMarker 信息)但创建自定义信息窗口?
public MarkerRenderer() {
super(getActivity(), mGoogleMap, mClusterManager);
}
@Override
protected void onBeforeClusterItemRendered(MyMarker myMarker, MarkerOptions markerOptions) {
markerOptions.icon(BitmapDescriptorFactory.fromResource(myMarker.getMarkerImage())).title(
"This is my custom marker with the default infoWindo");
}
@Override
protected void onBeforeClusterRendered(Cluster<MyMarker> cluster, MarkerOptions markerOptions) {
super.onBeforeClusterRendered(cluster, markerOptions);
markerOptions.title("cluster size " + cluster.getSize());
}
【问题讨论】:
标签: android google-maps