You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加KmlLayer至Google Maps后自定义InfoWindowAdapter失效问题求助

添加KmlLayer至Google Maps后自定义InfoWindowAdapter失效问题求助

我来帮你捋捋这个问题,大概率是KmlLayer加载时的内部操作干扰了自定义标记的信息窗口配置,给你几个实操性强的解决方案试试:

  • 调整加载顺序,等KML层解析完成后再处理自定义标记
    KmlLayer在解析和添加到地图的过程中,可能会对地图的标记系统做一些初始化或重置操作。你可以通过OnLayerParsedListener监听KML层的加载完成事件,等它完全解析好之后,再添加自定义标记并设置InfoWindowAdapter,这样能避免被KML层的加载过程覆盖配置:

    (childFragmentManager.findFragmentById(R.id.googleMap) as SupportMapFragment).getMapAsync { map ->
        map.clear()
        val content = resources.openRawResource(R.raw.carte)
        val layer = KmlLayer(map, content, context)
        layer.setOnLayerParsedListener {
            // 在这里添加所有自定义标记
            // 然后设置InfoWindowAdapter
            map.setInfoWindowAdapter(GoogleMapWindow())
        }
        layer.addLayerToMap()
    }
    
  • 检查自定义标记的Z轴层级
    KML层的默认Z轴层级(z-index)可能比你的自定义标记高,导致用户点击时实际触发的是KML层的内容,而非你的自定义标记。给自定义标记设置更高的z-index,确保它显示在KML层上方:

    val marker = map.addMarker(MarkerOptions().position(yourLatLng))
    marker.zIndex = 100f // 数值只要比KML层默认值高即可,默认一般为0
    
  • 确认InfoWindowAdapter的实现正确性
    你给出的GoogleMapWindow示例代码里,TextView的初始化有问题——TextView的构造函数需要传入上下文参数,否则无法正确渲染。正确的实现应该是这样的:

    class GoogleMapWindow(private val context: Context) : InfoWindowAdapter {
        override fun getInfoWindow(marker: Marker): View {
            val textView = TextView(context)
            textView.text = "My custom marker text"
            // 可以额外设置一些样式,比如内边距、文字大小等
            textView.setPadding(16, 16, 16, 16)
            return textView
        }
    
        override fun getInfoContents(marker: Marker): View? {
            // 如果getInfoWindow返回null,会调用这个方法,这里可以返回null或者自定义布局
            return null
        }
    }
    

    另外要记得,InfoWindowAdapter需要重写两个方法,如果你只实现了getInfoWindow,确保它返回的View是合法可渲染的,不然也会导致信息窗口不显示。

你可以先从调整加载顺序开始试,这个是最常见的解决思路,应该能解决大部分这类问题。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 07:48:09