我是在增加后端程序通过接口的方式增加一个Feature成功后,通知前端成功了,同时能地图上显示出来。我之前的想的办法是通过removeLayer掉当前layer,再一次增加的方法,但是效果达不到。请问有别的方法能达到实现吗?
function refreshMap () { if (this.map) { var self = this; if (self.mapLayers.length > 0 && self.mapLayers[4]) { self.map.removeLayer(self.mapLayers[4]); setTimeout(function () { self.createSingleLayer(4); }, 200); } } }
您这个createSingleLayer这个function是在外面定义的,上面提到的addlayer的方法吗?您可以这样先测试一下,就是不removelayer,直接createsinglelayer(5),相当于再加一个新的图层上去,看看这样能不能出来这个feature。可以试一下做个递归函数,在remove后再执行refreshMap(),elase 里面如果self.mapLayers[4]不存在的话addlayer。
如果是添加一个feature到vectorlayer里的话可以用refresh刷新一下应该也可以https://openlayers.org/en/latest/apidoc/module-ol_source_Vector-VectorSource.html#refresh
试过了VectorSource.html#refresh的方法和先removeLayer 后再addLayer 这2种方法,出现情况在放大/缩小地图尺寸操作后,增加的Feature可以显示出来了,但是在原来增加的时候的显示尺寸会不可见,只有刷新整个页面都才。