javascript - 无法读取未定义的属性“_layerAdd”(vue + 传单)
问题描述
尝试将要素组添加到我的地图时出现此错误:
TypeError:无法读取未定义的属性“_layerAdd”
引发错误的代码片段:
<l-map
id="mapid"
:zoom="zoom"
:center="center"
/>
var map = document.getElementById("mapid").__vue__;
var drawnItems = new L.FeatureGroup();
map.addLayer(drawnItems);
使用:
leaflet 1.5.1,
leaflet-draw 1.0.4,
vue 2.6.10,
vue2-leaflet 2.2.1
解决方案
该方法addLayer
不是组件的公共 API 的一部分l-map
。即使是这样,传递给的“层”addLayer
也必须是 Vue2Leaflet 包装器组件,而不是底层的 Leaflet 层。
要看到这一点,请考虑以下代码LFeatureGroup.vue
:
注意它是如何调用的:
this.parentContainer.addLayer(this);
这里this
指的是 Vue 组件的一个实例l-feature-group
,而底层的 LeafletFeatureGroup
在this.mapObject
属性中。
我建议您尝试改用该l-feature-group
组件。就像是:
<l-map
id="mapid"
:zoom="zoom"
:center="center"
>
<l-feature-group>
<!-- relevant children -->
</l-feature-group>
</l-map>
文档中有一个很好的例子:
https://korigan.github.io/Vue2Leaflet/#/components/l-feature-group/
我还强烈建议您避免使用document.getElementById("mapid").__vue__
作为获取 Vue 实例的一种方式。使用ref
and$refs
代替。
推荐阅读
- google-analytics - 自定义尺寸错误 - 大约 10~15% 的价值被遗漏
- asp.net-core - 有没有办法通过 MVC 应用程序中的特定控制器操作为 Blazor 应用程序提供服务?
- c# - 如何在 linerenderer 中添加更多点或位置?
- reactjs - mapDispatchToProps 的返回值错误
- sql - 如何在 SQL 案例语句中停止执行 else 条件
- google-chrome-extension - 'extraHeaders' 不适用于 onResponseStarted
- firebase - 注销用户时出错 - invertase React Native Firebase
- php - Laravel 5:如何使用 vue js 获取数据属性中的值
- javascript - 如何在滚动标题上?
- python - 从具有相似键的元组创建字典