Saya ingin menyimpan data geometri setelah saya memodifikasinya, jadi saya perlu acara yang diaktifkan setelah saya selesai mengubah fitur. Saya menggunakan berikut ini dari posting ini: pendengar memodifikasi interaksi
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");
});
});
Tapi pendengar ini menembak terlalu banyak kali dalam satu modifikasi, dan jika saya menggunakan 'satu kali' bukan 'pada' itu hanya api perubahan kecil pertama dan tidak lebih, sehingga tidak menyimpan perubahan nyata. Saya memerlukan sesuatu seperti "changeend" atau "memodifikasiend" yang akan diaktifkan ketika saya akan selesai untuk memodifikasi fitur, apa yang bisa saya gunakan?
openlayers-2
javascript
openlayers
events
Yordania
sumber
sumber
Jawaban:
Jika Anda memerlukan acara ubah mengapa Anda tidak menggunakannya dalam interaksi ubah (saya kira Anda menggunakan interaksi ubah) periksa ini
Acara ini tersedia dalam versi terbaru ol3. Dalam snip kode saya, saya menganggap Anda hanya mengubah satu kegagalan sekaligus (getArray () [0]). Jika Anda menggunakan lebih dari satu fetaure untuk memodifikasi sekaligus, dapatkan array fetaures dan tambahkan loop untuk manipulasi lebih lanjut. Seperti itu:
sumber
modify
adalah nama Interaksi Ubah dan bahwamodifyend
kode Anda datang setelah mendefinisikan Interaksi: pertamavar modify = new ol.interaction.Modify({ features: select.getFeatures() });
dan kemudian kode Anda.select
adalah nama Interaksi Pilih saya. Juga seorang pengembang dapat melakukane.features.getArray()[0].getGeometry().getCoordinates()
ataue.features.getArray()[0].getGeometry().getType()
untuk mendapatkan coords atau tipenya. Jawaban yang bagus sih Bung.e.features.getArray()[0].getId())
selalu mengembalikan id yang sama apa pun fitur yang saya modifikasi. Apakah ada cara lain untuk mengetahui fitur mana yang telah diubah?