أكثر

مشكلة في إزالة التفاعل بعد نهاية السحب في openlers-3

مشكلة في إزالة التفاعل بعد نهاية السحب في openlers-3


أنا استخدم OpenLayers-3.8.2. انا املك رسم الجمود على النحو التالي:

دالة drawEnd () {map.removeInteraction (drawIneraction). } var drawInteraction = new ol.interaction.Draw ({source: mysource، type: 'LineString'})؛ drawInteraction.on ('drawend' ، drawEnd) ؛ map.addInteraction (drawInteraction) ؛

أرغب في رسم ميزة واحدة للمستخدم. يعمل هذا الرمز ، ولكن عندما يرسم المستخدم معلمًا ، قم بتكبير الخريطة في المستوى الثاني.

كيف يمكنني منع التكبير?


يمكنك الاستماع إلى ملفاتdblclickحدث ثم ببساطةعودة كاذبة؛لتعطيل التكبير ؛ ومع ذلك ، فأنت بحاجة إلى تعيين شرط لذلك بحيث يتم تعطيل التكبير / التصغير فقط عندما يقوم المستخدم بالرسم.

map.on ("dblclick"، function (e) {if (drawingMode) {return false؛}})؛

الطريقة الصحيحة للتعامل مع هذا شيء مثل:

// ابحث عن تفاعل النقر المزدوج الموجود على الخريطة. فار dblclickzoom ؛ map.getInteractions (). forEach (وظيفة (تفاعل) {if (تفاعل مثيل من ol.interaction.DoubleClickZoom) {dblclickzoom = تفاعل؛}})؛ // إزالة التفاعل من الخريطة. إذا (dblclickzoom) {map.removeInteraction (dblclickzoom) ؛ } / * أضف تفاعل الرسم هنا * / var drawinteraction = new ol.interaction.Draw (...) ؛ // أحب أن ألصق المستمع بحدث تغيير المصدر بدلاً من // التعادل التفاعل ، لكن أعتقد أن أيًا منهما يجب أن يعمل ... drawinteraction.on ('drawend' ، function () {map.removeInteraction (drawinteraction) ؛ // Do هذا في مهلة بحيث لا يتم تشغيله بواسطة // النقر المزدوج المحتمل الذي تسبب في إنهاء الرسم. if (dblclickzoom) {setTimeout (function () {map.addInteraction (dblclickzoom)؛})؛}}) ؛ // ابدأ تفاعل الرسم ... map.addInteraction (drawinteraction) ؛

جرب خيار stopClick

var drawInteraction = new ol.interaction.Draw ({source: mysource، type: 'LineString'، stopClick: true})؛

من خلال ضبط هذا قبل الرسم ، يمكنك تعطيل التكبير عند النقر المزدوج ،

ol.interaction.defaults ({doubleClickZoom: false})

بعد إزالة تفاعل السحب ، أعد تكبير النقر المزدوج إلى true


شاهد الفيديو: S01E02 - Openlayers Usage with React