在尝试向我的地图添加要素组时遇到此错误:
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
答案 0 :(得分:0)
方法addLayer
不属于l-map
组件的公共API的一部分。即使是,传递给addLayer
的“层”也必须是Vue2Leaflet包装器组件,而不是基础的Leaflet层。
要查看此内容,请考虑LFeatureGroup.vue
中的代码:
注意其调用方式:
this.parentContainer.addLayer(this);
此处this
指Vue组件l-feature-group
的实例,而基础的传单FeatureGroup
位于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
和$refs
。