互动地图android v2

Serj

我想构建一个交互式的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章