react-native-amap3d Android 端 Marker active = true 属性 失效

835 阅读1分钟

需求

在地图上搜索某个点时

  • 要定位到这个点,
  • 显示这个点的 infowindow。

玄学现象

测试上述需求放大并显示infowindow,出现了玄学现象

  • 某些点点的 infowindow 会显示。
  • 某些不会显示。

解决思路复盘

  1. 思考。-> 无果
  2. 搜索引擎。-> 无果
  3. 查看日志。-> 无果
    • 对比正常显示infowindow 和 异常不显示的 日志。
  4. git 社区搜索 -> 无果
  5. Debug
    • 发现正常显示 infowindow 的。定位的地图区域只绘制有一个marker(不在该区域的marker,本人已做处理,不会绘制)。
    • 异常不显示 infowindow 的。定位的地图区域包含二个以上的marker。
  6. 思来想去,只有可能上述第四点现象引起的。根据以往的经验和验证。高德还是百度的 InfoWinfow 每次都只能显示一个。 查看关键代码

image.png 上面的active会执行下述方法

image.png 这里 active = false 时。 也会执行。

  • 如果先后add两个marker.
    • 第一个marker 设置为 [active = true] 显示infowindow。
    • 然后 第二个 设置 [active = false]时。又会执行一个遍 hideInfoWindow。这个可能会把第一个地图上显示infoWindow 给隐藏掉。

解决

image.png