无法读取未定义的属性“ _layerAdd”(Vue +传单)

时间:2019-11-05 15:22:50

标签: javascript vue.js leaflet

在尝试向我的地图添加要素组时遇到此错误:

  

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

1 个答案:

答案 0 :(得分:0)

方法addLayer不属于l-map组件的公共API的一部分。即使是,传递给addLayer的“层”也必须是Vue2Leaflet包装器组件,而不是基础的Leaflet层。

要查看此内容,请考虑LFeatureGroup.vue中的代码:

https://github.com/KoRiGaN/Vue2Leaflet/blob/940e17d8a3b19740a448dedf220d0f7ba9c61d31/src/components/LFeatureGroup.vue#L27

注意其调用方式:

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