fengMap报错 :Uncaught TypeError: Cannot read properties of undefined (reading ‘Q‘)

2023-05-16

 

目录

 一、问题

 二、原因

三、总结


tips:如嫌繁琐,直接看总结即可!

一、问题

详细错误:

fengmap.map.min.js?8d2c:47451 Uncaught TypeError: Cannot read properties of undefined (reading 'Q')
    at r.value (fengmap.map.min.js?8d2c:47451:1)
    at eval (mapCover.js?61b4:88:1)
    at Array.forEach (<anonymous>)
    at eval (mapCover.js?61b4:79:1)
    at Array.forEach (<anonymous>)
    at MapCover.updateMarkerPosition (mapCover.js?61b4:70:1)
    at FengMapView.updateMarkerPosition (index.js?7118:108:1)
    at dealSockData (view.vue?c6da:233:1)
    at eval (view.vue?c6da:241:1)

 二、原因

1.remove方法报错,需要判断具有 Q属性才可以remove。可能原因:删除了一次又被删除;dom还没有生成就调用remove方法。

2.moveTo方法报错,需要判断具有Q属性的才可以moveTo。

   moveTo方法报错,一般是逻辑问题:因为remove就是删除了xxxmarker对象的Q属性。既然你都删除了,你为啥还要moveTo?在你需要moveTo的xxxmarker里面就不应该有没有Q属性的marker (你调用remove方法后,就应该把相应的xxxmarker对象也一起删除,避免影响后续的moveTo操作)!

当然还有一种情况就是刚刚加载dom时,就要求移动dom,这是也必须判断xxxmarker是否有Q属性。

  注:上述的xxxmarker是指用 fengmap提供的  FMDomMarker、FMImageMarker等API生成的标记对象。

三、总结

1.报错:Cannot read properties of undefined (reading ‘Q‘),有两个基本原因:

   1)remove方法报错

    2)moveTo方法报错

  本质原因:操作了不存在的domremove方法可能是因为dom还没有加载完就执行了remove方法,所以必须手动判断 xxxmarker是否有Q属性;moveTo也可能时因为dom还没有加载完就执行remove方法,所以此时也必须判断 xxxmarker是否有Q属性;

    总之:保证操作的时候dom存在,未加载的、已经删除的dom不执行remove、moveTo即可

 2.综述所述,为保险起见,最好在 remove和moveTo都判断一下是否有 Q属性,有Q属性才能执行remove和moveTo方法

 3.乌鱼子,其实这种事情应该是api内部处理的,但是蜂鸟没有处理,所以只能自己判断处理了。

/*

希望对你有帮助!

如有错误,欢迎指正,非常感谢!

*/ 

    

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

fengMap报错 :Uncaught TypeError: Cannot read properties of undefined (reading ‘Q‘) 的相关文章

随机推荐