Vue3 中使用 vue-baidu-map-3x bm-polygon 组件:点击事件获取 event 并携带自定义参数的三种方案
在 Vue3 中使用 `vue-baidu-map-3x` 的 `bm-polygon` 组件时,可以通过闭包或自定义事件处理来同时获取原生事件和自定义参数。以下是解决方案: 方案1:使用闭包传递参数 ```vue <template> <baidu-map> <bm-polygon :path="polygonPath" @click="(e) => handlePolygonClick(e, customParam)" /> </baidu-map> </template> <script setup> const customParam = { id: 123 }; const handlePolygonClick = (event, param) => { console.log('百度地图事件对象:', event); console.log('自定义参数:', param); }; </script> ``` 方案2:通过data属性传递(推荐) ```vue <template> <baidu-map> <bm-polygon v-for="item in polygons" :key="item.id" :path="item.path" :data="item" <!-- 自定义数据绑定 --> @click="handlePolygonClick" /> </baidu-map> </template> <script setup> const handlePolygonClick = (event) => { const customData = event.target?.data; // 通过DOM属性获取 console.log('地图事件:', event); console.log('绑定数据:', customData); }; </script> ``` 方案3:使用自定义事件包装 ```vue <template> <baidu-map> <bm-polygon :path="polygonPath" @click="emitCustomEvent" /> </baidu-map> </template> <script setup> const emit = defineEmits(['polygon-click']); const emitCustomEvent = (event) => { emit('polygon-click', { originEvent: event, customData: { foo: 'bar' } }); }; </script> ``` 注意事项: 1. 百度地图的事件对象包含地理坐标信息,通过 `event.point` 获取经纬度 2. 动态生成的多边形需要确保 `v-for` 中每个元素有唯一 `key` 3. 方案2的DOM属性方式需要确保百度地图内部未覆盖该属性名 ######[AI写代码神器 | 488点数解答 | 2025-07-25 15:33:09]
- Vue3 中使用 vue-baidu-map-3x bm-polygon 组件:点击事件获取 event 并携带自定义参数的三种方案(DeepSeek | 488点数解答 | 2025-07-25 15:33:09)208
- Python实现深度优先爬虫:精准爬取百度域名下链接,模拟输出详细信息(GPT | 2142点数解答 | 2025-05-13 15:54:49)302
- 深度剖析:神秘技能对象代码的属性、逻辑与注意要点(字节豆包 | 211点数解答 | 2025-02-01 13:23:26)306
- 异步函数代码优化建议与关键逻辑注意点揭秘(字节豆包 | 179点数解答 | 2025-05-17 20:49:48)230
- 代码深度剖析:从语法纠错到优化,这些要点你必须掌握!(字节豆包 | 1422点数解答 | 2025-11-11 22:44:00)56
- JavaScript 代码深度剖析:错误分析、优化方案及注意要点(字节豆包 | 951点数解答 | 2025-11-11 22:46:53)116
- filter:function(event,player){ return player.isMaxHp(); }, function(event,player){ return event.card&&(get.type(event.card)=='trick'||get.type(event.card)=='basic'&&!['shan','tao','jiu','du'].contains(event.card.name))&&game.hasPlayer(function(current){ return current!=player&&get.distance(current,player)<=1; }); },(DeepSeek | 1399点数解答 | 2026-03-22 16:43:17)31
- 无名杀技能改造:去除特殊技能限制,代码修改与注意要点揭秘(DeepSeek | 556点数解答 | 2025-06-29 08:59:58)232
- 卡牌技能揭秘:“渐营”技能逻辑、存储机制与触发限制全解析(讯飞星火 | 713点数解答 | 2025-07-05 23:27:14)190
- 游戏脚本代码深度剖析:功能、问题、优化与注意要点(字节豆包 | 2075点数解答 | 2025-11-16 13:40:21)81
- C 语言实现按规则合并单链表:巧用原表空间,含代码与题解(GPT | 1020点数解答 | 2024-06-17 15:01:02)333
- "Debugging 'Cannot Read Properties of Null (reading \'userid\')' Error in Vue Components: Steps and Example"(讯飞星火 | 614点数解答 | 2024-11-28 14:31:57)282