android - 多个 InfoWindowAdatper 的

标签 android google-maps-android-api-2

我有一张 map ,我正在其中创建不同类型的标记。我无法将信息窗口适配器分配给标记(哎呀,那不是很好),我只能在整个 map 的 InfoWindowAdapter 上分配(至少我认为)。

我的问题是我想根据我点击的内容显示不同类型的信息窗口。设置一个 InfoWindowAdapter 的唯一方法是根据我传递的标记处理创建正确类型的信息窗口吗?

我是不是错过了什么简单的东西?

最佳答案

当您向 map 添加标记时,您会收到一个 ID,该 ID 可以唯一标识您的标记。

您可以在添加标记并将其放入 map 后立即创建 InfoWindowAdapter 的实例,这会将 ID 作为键,将您的 InfoWindowAdapter 作为值。

Marker marker = map.addMarker(options);
// Create your special infoWindowAdapter for this marker
// ...
adapterMap.put(marker.getId(), youSpecialInfoWindowAdapter);

在您在 map 上注册的一个中央 InfoWindowAdapter 中,您可以只使用标记的 ID 来获取特定的 InfoWindowAdapter 并委托(delegate)给它的方法。 访问 map 可以例如在 InfoWindowAdapter 的构造函数中提供(以避免全局或静态变量):

class CentralInfoWindowAdapter implements InfoWindowAdapter {
    Map<String, GoogleMap.InfoWindowAdapter> adapterMap;

    public CentralInfoWindowAdapter(
            Map<String, GoogleMap.InfoWindowAdapter> adapterMap) {
        this.adapterMap = adapterMap;
    }

    @Override
    public View getInfoContents(Marker marker) {
        InfoWindowAdapter adapter = adapterMap.get(marker.getId());
        return adapter.getInfoContents(marker);
    }

    @Override
    public View getInfoWindow(Marker marker) {
        InfoWindowAdapter adapter = adapterMap.get(marker.getId());
        return adapter.getInfoWindow(marker);
    }

}

当然你可以改变这个原则。如果根据标记的“类型”只有几个不同的 InfoWindowAdapter,则可以将枚举放入 map 中,它标识标记的类型并让您决定在中央 InfoWindowAdapter 中使用哪种真正的 InfoWindowAdapter ,或者您仍然可以将特殊 InfoWindowAdapter 的实例放入 map 中,但对相同类型的标记使用相同的实例。

关于android - 多个 InfoWindowAdatper 的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23143969/

相关文章:

android - 如何将视频播放为动态壁纸 android?

java - 支持MapFragment和NullPointerException

postgresql - postGIS 中的 geom 格式用于在 google maps android 中打印

android - 在 Gmap 中绘制路线坐标(Google map Android API)

java - 从表面 View 读取字节数组?

java - Java 中的动态模型

android - 我可以获取 Android 的 Google map 应用程序的源代码吗?

android - 是否有任何android API可以使用文件格式获取文件类型

android - 使用 android Google Maps API v2 作为离线图 block 的查看器 : is it possible?

android - 是否可以从谷歌地图 API 获取过去旅行地点的经度、纬度和时间戳?