OpenLayers中新建VectorSource无addFeature()方法问题咨询
问题分析与解决方案
嘿,我一眼就发现问题所在啦!你创建的newsource本身是自带addFeature()方法的——毕竟ol.source.Vector原生就支持这个方法,问题其实出在你往图层组添加新图层的方式上。
你现在用的代码是:
vectorGroup.getLayers().getArray().push(newVector);
这里的getArray()会返回图层集合的副本数组,你往这个副本里push元素,根本不会把新图层真正添加到vectorGroup里!所以你的新图层其实没被正确加载到地图上,看起来就像是newsource没有addFeature()方法(实际上是这个source根本没关联到活跃的图层实例)。
正确的修改方式
把添加图层的代码改成用集合自带的add()方法:
vectorGroup.getLayers().add(newVector);
这样新的Vector图层才会被真正注册到图层组中,对应的source也会正常关联到地图,addFeature()方法就能正常调用啦。
快速验证小技巧
你可以在创建完source后加一行代码验证方法是否存在:
console.log(newsource.addFeature); // 正常情况下会输出该方法的函数体,说明方法本身是存在的
内容的提问来源于stack exchange,提问作者jso35
相关产品推荐
相关产品推荐

