交互式地图android v2

时间:2014-12-28 11:25:48

标签: android google-maps android-dialogfragment android-maps-v2 infowindow

我想构建一个交互式Android地图应用。单击它们时,它将具有不同的标记类型和许多不同的选项。

第一种方法: 我开始使用我将使用自定义infowindows的概念,但发现地图只能有单个InfoWindowAdapter,据说这种方法有另一个错误。 InfoWindows不能注册点击监听器,我需要在标记点击后显示一些可点击的UI。

第二种方法: 标记点击会触发与标记类型对应的alertDialog。我犹豫不决,因为我在OnActivityResult中会有很多切换案例。 示例 - dialog fragments with OnActivityResult

还有其他想法吗?我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

前段时间我遇到了类似的问题而且我“黑了”它如下:

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当时只能选择一个标记,所以当用户选择另一个标记时,我们会更改监听器。