目录

使用地图服务展示自定义信息窗时,返回上一页面产生崩溃如何解决

问题现象

页面展示地图服务自定义信息窗时(如下图的点击店铺显示自定义图标),返回上一页面,产生崩溃。

背景知识

问题定位

  1. 查看崩溃日志,报错“Unexpected Text in JSON: Empty Text”。查看具体报错的代码行内容为let XXX = JSON.parse(data) as object,判断是data为空导致崩溃。
  2. 查看工程代码中data的来源为marker?.getSnippet(),即关闭页面时marker?.getSnippet()的值为空。
  3. 确认在页面关闭时,地图服务会清除Marker,导致marker?.getSnippet()为空。

分析结论

使用地图服务的自定义信息窗能力时,使用marker?.getSnippet()获取信息窗标题,在页面退出时,地图服务会清除掉页面所有的覆盖物,包括Marker,此时marker?.getSnippet()获取的值为空字符串,使用JSON.parse转换marker?.getSnippet()获取的空字符串,会产生崩溃。

修改建议

使用try/catch方式对JSON.parse(data)进行异常防护,避免data为空值时产生崩溃。