【问题标题】:Refresh feature with Openlayers 3Openlayers 3 的刷新功能
【发布时间】:2016-08-22 09:07:08
【问题描述】:

是否可以使用 Openlayers 3 刷新矢量图层的单个特征?我不想刷新所有图层。

【问题讨论】:

  • 很难想象单个功能需要如何刷新。
  • @JonatasWalker 例如,当手动绘制一个特征时,哪种样式取决于在服务器上添加到它的信息。或者可能是因为需要针对该特定功能更改样式。

标签: dictionary refresh openlayers-3 layer


【解决方案1】:

如果您对要素有参考,则可以更新要素的各个方面,例如几何或属性,这些方面将在地图中更新。

setGeomtrysetProperties 都触发了更新地图的事件: http://openlayers.org/en/latest/apidoc/ol.Feature.html

只要您设置好可以找到或保留对该功能的直接引用,您就可以使用http://openlayers.org/en/latest/apidoc/ol.Feature.html 中详述的方法来更新功能

【讨论】:

    【解决方案2】:

    如果您使用的是ol向量源,您可以尝试将特征移除并重新添加。 Add Feature 函数触发一个 change 事件(对于整个源,但这不应该更新已绘制的特征)。

    ol.source.Vector.prototype.addFeature = function(feature) {
      this.addFeatureInternal(feature);
      this.changed();
    };
    

    【讨论】:

    • 就我而言,许​​多用户可以在同一张地图上工作。如果用户修改了一个特性,那么必须为其他用户更新相同的特性,而不需要更新所有层。
    • 这非常困难,因为您必须触发与服务器之间的通知并将其推送或拉取到前端。你可以每隔 5 秒左右从前端拉取一次,或者使用 websocket 通知前端有变化。
    • 我尝试了你的方法(删除该功能并重新添加),但该功能从地图上消失了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多