ol.Feature OL3 API的文档声明它会触发'change:geometry'事件。该文档未指定何时触发此事件。
以下JSFiddle有一个使用ol.interaction.Translate移动矢量要素以移动要素的示例。在移动某个功能时,会触发“更改”事件,但不会触发“更改:几何”事件。
通知功能几何体已更新的正确方法是什么?
代码:
var select = new ol.interaction.Select();
select.on('select', (event) => {
event.selected.forEach((selectedFeature) => {
selectedFeature.on('change', (event) => {console.log('change', event)})
selectedFeature.on('change:geometry', (event) => {console.log('change:geometry', event)})
})
})
var translate = new ol.interaction.Translate({
features: select.getFeatures()
});
答案 0 :(得分:1)
如果您更改几何对象,feature.setGeometry(aNewGeomObj)
事件发生在要素级别,即如果您执行了此操作:feature.setGeometry(null)
,change
等。
您正在寻找的是监听几何对象本身的var geometry = feature.getGeometry();
geometry.on('change', function(evt) {
console.log(evt)
}, this);
事件。你可以这样做:
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import java.io.File;
import java.io.IOException;
import java.util.Map;
public class Parser {
public static void main(String[] args) throws IOException {
File input = new File("input.txt");
Map<String, Object> jsonFileAsMap = new ObjectMapper().readValue(input, new TypeReference<Map<String, Object>>() {});
Map<String, Object> ratesMap = (Map<String, Object>) jsonFileAsMap.get("rates");
ratesMap.forEach((k, v) -> System.out.println("Key = " + k + ", Value = " + v));
}
}
你应该能够从那里做你想做的事。