Quero salvar os dados da geometria depois de modificá-los, portanto, preciso de um evento que seja acionado depois que terminar de modificar o recurso. Eu uso o seguinte neste post: ouvinte modificar interação
var selected_features = select.getFeatures();
// when a feature is selected...
selected_features.on('add', function (event) {
// get the feature
var feature = event.element;
feature.on("change", function (event) {
logStatus(feature.getId() + " has been changed!\n");
});
});
Mas esse ouvinte dispara muitas vezes em uma única modificação e, se eu estiver usando 'uma vez' em vez de 'ligado', aciona apenas a primeira pequena alteração e não mais, portanto, não está salvando a mudança real. Preciso de algo como "changeend" ou "modifyend" que será acionado quando terminar de modificar o recurso. O que posso usar?
openlayers-2
javascript
openlayers
events
Jordânia
fonte
fonte
Respostas:
Se você precisa de um evento modifyend, por que não o usa na interação de modificação (acho que você usa uma interação de modificação), verifique isso
Este evento está disponível nas versões mais recentes do ol3. No meu snip de código, presumo que você modifique apenas uma fetaure de uma vez (getArray () [0]). Se você usar mais de um fetaure para modificar de uma só vez, obtenha o array de fetaures e adicione um loop para manipulação adicional. Igual a:
fonte
modify
é o nome da interação de modificação e que seumodifyend
código vem depois de definir a interação: primeirovar modify = new ol.interaction.Modify({ features: select.getFeatures() });
e depois o seu código.select
é o nome da minha interação de seleção. Além disso, um desenvolvedor pode fazere.features.getArray()[0].getGeometry().getCoordinates()
oue.features.getArray()[0].getGeometry().getType()
obter as cordas ou o tipo. Bela resposta de qualquer maneira cara.e.features.getArray()[0].getId())
sempre retorna o mesmo ID, independentemente do recurso que estou modificando. Haveria outra maneira de saber qual recurso foi alterado?