nol*_*man 9 android google-maps markerclusterer
我正在使用Google Maps Android API Utility Library,以便以群集方式在地图中显示多个标记.我按照说明使其工作,以及查看库中的示例,但我无法弄清楚如何显示InfoWindow单击标记的时间.
我想getMap().setOnMarkerClickListener(mClusterManager);是管理onClick事件的人,如果注释掉了,我可以使用它来覆盖它,getMap().setInfoWindowAdapter(new InfoWindowAdapter() {));但我无法访问我的自定义标记对象.然而,如果我使用getMap().setOnMarkerClickListener(mClusterManager);,我找不到一种方法来显示InfoWindow点击标记的时间.
有没有人知道如何实现这一目标?
非常感谢提前!
rci*_*ati 23
您需要扩展DefaultClusterRenderer该类并覆盖onBeforeClusterItemRendered,将标题附加到作为参数传递的MarkerOptions对象.
之后,您可以将您的实现传递给ClusterManager.
例:
class MyItem implements ClusterItem {
private LatLng mPosition;
private String mTitle;
public MyItem(LatLng position){
mPosition = position;
}
@Override
public LatLng getPosition() {
return mPosition;
}
public String getTitle() {
return mTitle;
}
public void setTitle(String title) {
mTitle = title;
}
}
class MyClusterRenderer extends DefaultClusterRenderer<MyItem> {
public MyClusterRenderer(Context context, GoogleMap map,
ClusterManager<MyItem> clusterManager) {
super(context, map, clusterManager);
}
@Override
protected void onBeforeClusterItemRendered(MyItem item, MarkerOptions markerOptions) {
super.onBeforeClusterItemRendered(item, markerOptions);
markerOptions.title(item.getTitle());
}
@Override
protected void onClusterItemRendered(MyItem clusterItem, Marker marker) {
super.onClusterItemRendered(clusterItem, marker);
//here you have access to the marker itself
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样使用它:
ClusterManager<MyItem> clusterManager = new ClusterManager<MyItem>(this, getMap());
clusterManager.setRenderer(new MyClusterRenderer(this, getMap() ,clusterManager));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4676 次 |
| 最近记录: |