我想构建一个交互式的Android地图应用程序。单击它们时,它将具有不同的标记类型和许多不同的选项。
第一种方法:我从使用自定义信息窗口的概念开始,但发现一个映射只能有一个InfoWindowAdapter,也就是说,这种方法还有另一个缺点。InfoWindows不能向其注册单击侦听器,并且我需要具有一些可单击的UI才能在标记单击后显示。
第二种方法:单击标记会触发一个与标记类型相对应的alertDialog。我很犹豫,因为在OnActivityResult内部会有很多开关案例。示例-具有OnActivityResult的对话框片段
还有其他想法吗?我想念什么吗?
不久前,我遇到了类似的问题,并且如下所示“被黑客入侵”:
mGoogleMap.setInfoWindowAdapter(new InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker pMarker) {
MarkerDescriptor descriptor = mMarkerDescriptorsMap.get(pMarker);
mGoogleMap.setOnInfoWindowClickListener(descriptor.getOnInfoWindowClickListener(MapActivity.this));
return descriptor.getInfoWindowView();
}
}
MarkerDescriptor应该是将针对每种特定标记类型实现的简单接口:
public interface MarkerDescriptor {
public View getInfoWindowView();
public OnInfoWindowClickListener getOnInfoWindowClickListener(Context pContext);
}
并保留引用:
private Map<Marker, MarkerDescriptor> mMarkerDescriptorsMap = new HashMap<Marker, MarkerDescriptor>();
这个想法的基础是,GoogleMap一次只能选择一个标记,因此当用户选择另一个标记时,我们将更改侦听器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句