Dafrok / vue-baidu-map

Baidu Map components for Vue 2.x
https://dafrok.github.io/vue-baidu-map/
MIT License
2.41k stars 431 forks source link

绘制圆形异常 #541

Open cheungzh opened 5 years ago

cheungzh commented 5 years ago

[BUG 反馈] 绘制圆形异常

浏览器版本号

chrome 版本 70.0.3538.102(正式版本) (64 位)

Vue 版本号

2.5.17

组件库版本号

0.21.14

现象描述

绘制圆形, 点击编辑报错

完整异常信息

 Error in callback for watcher "editing": "TypeError: Cannot read property 'forEach' of undefined"

found in

---> <BmCircle> at modules/mobile-fence/node_modules/vue-baidu-map/components/overlays/Circle.vue
       <BmMap>
         <GeoFence> at modules/mobile-fence/src/components/fence/geo-fence.vue
           <FenceAdd> at modules/mobile-fence/src/pages/mobile-fence/add-fence.vue
             <Layout> at src/pages/layout.vue
               <Root>
warn @ vue.esm.js?a026:591
logError @ vue.esm.js?a026:1737
globalHandleError @ vue.esm.js?a026:1732
handleError @ vue.esm.js?a026:1721
run @ vue.esm.js?a026:3235
flushSchedulerQueue @ vue.esm.js?a026:2981
(anonymous) @ vue.esm.js?a026:1837
flushCallbacks @ vue.esm.js?a026:1758
Promise.then (async)
microTimerFunc @ vue.esm.js?a026:1806
nextTick @ vue.esm.js?a026:1850
queueWatcher @ vue.esm.js?a026:3068
update @ vue.esm.js?a026:3209
notify @ vue.esm.js?a026:697
reactiveSetter @ vue.esm.js?a026:1014
proxySetter @ vue.esm.js?a026:3300
editOverlay @ geo-fence.vue?7d2d:335
click @ geo-fence.vue?c9e7:96
x.lang.Ca.dispatchEvent @ map.js?v=2.1:452
(anonymous) @ VM12756:1
vue.esm.js?a026:1741 TypeError: Cannot read property 'forEach' of undefined
    at VueComponent.bindEditingNodeEvents (Circle.vue?b149:116)
    at VueComponent.enableEditing (Circle.vue?b149:124)
    at VueComponent.editing (Circle.vue?b149:96)
    at Watcher.run (vue.esm.js?a026:3233)
    at flushSchedulerQueue (vue.esm.js?a026:2981)
    at Array.eval (vue.esm.js?a026:1837)
    at flushCallbacks (vue.esm.js?a026:1758)
logError @ vue.esm.js?a026:1741
globalHandleError @ vue.esm.js?a026:1732
handleError @ vue.esm.js?a026:1721
run @ vue.esm.js?a026:3235
flushSchedulerQueue @ vue.esm.js?a026:2981
(anonymous) @ vue.esm.js?a026:1837
flushCallbacks @ vue.esm.js?a026:1758
Promise.then (async)
microTimerFunc @ vue.esm.js?a026:1806
nextTick @ vue.esm.js?a026:1850
queueWatcher @ vue.esm.js?a026:3068
update @ vue.esm.js?a026:3209
notify @ vue.esm.js?a026:697
reactiveSetter @ vue.esm.js?a026:1014
proxySetter @ vue.esm.js?a026:3300
editOverlay @ geo-fence.vue?7d2d:335
click @ geo-fence.vue?c9e7:96
x.lang.Ca.dispatchEvent @ map.js?v=2.1:452
(anonymous) @ VM12756:1
2spotmkrs.png:1 GET http://192.168.8.209:1301/images/spotmkrs.png 404 (Not Found)

在线示例 / 仓库 URL

暂无

复现用例

暂无

预期输出

暂无

实际输出

报错
Dafrok commented 5 years ago

圆形的问题在文档的圆形组件章节第一行写了。

cheungzh commented 5 years ago

getEditingKey (overlay) { const stack = [] overlay.enableEditing() setTimeout(() => { for (const key in overlay) { if (overlay[key] && overlay[key].length === 2) { stack.push(key) } } overlay.disableEditing() for (const key in overlay) { if (overlay[key] && overlay[key].length === 0 && ~stack.indexOf(key)) { this.editingKey = key } } }, 0) } 是在这段代码的时候报错异常, 看了一下没有进到设置this.editing Key这一行 导致 bindEditingNodeEvents () { const {originInstance, editingKey, dragStartHandler, dragEndHandler} = this //这里报错了 originInstance[editingKey].forEach($node => { $node.addEventListener('dragstart', dragStartHandler) $node.addEventListener('dragend', dragEndHandler) }) },

lizhongzhen11 commented 5 years ago

@Dafrok 大佬是不是喜欢玩梦幻?

chai13 commented 4 years ago

我也有同样的问题,发现是originInstance[editingKey]为undefined,但是不知道怎么解决,设置editing时加了setTimeout也没用