目录
一、问题
二、原因
三、总结
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方法报错
本质原因:操作了不存在的dom,remove方法可能是因为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(使用前将#替换为@)