ล้อเมาส์ของแผ่นพับซูมเมื่อคลิกบนแผนที่เท่านั้น


19

ฉันทำงานกับห้องสมุด Leaflet JavaScriptและแนบแผนที่ (กำลังทำงาน) กับเอกสาร HTML ของฉัน มันอยู่ตรงกลางของหน้าและเมื่อฉันเลื่อนลงด้วยล้อเลื่อนของเมาส์และมาถึงแผนที่มันจะซูมเข้าสู่แผนที่โดยอัตโนมัติ

ฉันต้องการเลื่อนดูหน้าโดยไม่หยุดที่แผนที่ มีวิธีการเปิดใช้งานการซูมล้อหลังจากคลิกครั้งแรกบนแผนที่หรือไม่

คำตอบ:


27

ง่ายมาก: สร้าง L.Map ด้วยscrollWheelZoom: falseตัวเลือกจากนั้นเพิ่มผู้ฟัง:

map.once('focus', function() { map.scrollWheelZoom.enable(); });

หากคุณต้องการสลับการซูม:

map.on('click', function() {
  if (map.scrollWheelZoom.enabled()) {
    map.scrollWheelZoom.disable();
    }
    else {
    map.scrollWheelZoom.enable();
    }
  });

ขอบคุณ :) ผมเริ่มแสดงความคิดเห็นสำหรับเรื่องนี้ แต่ได้ใส่ขนาดใหญ่เกินไปดังนั้นในคำตอบด้านล่าง
danwild

13

ความคิดเห็นเพิ่มเติม / การปรับปรุงองค์ประกอบสลับของคำตอบที่ยอมรับซึ่งดีมาก (ขอบคุณ) แต่.

เมื่อมีการโต้ตอบกับแผนที่สำหรับการใช้งานหลายกรณีผู้ใช้จำเป็นต้องคลิกแผนที่เพื่อทำงานของพวกเขาดังนั้นสิ่งนี้:

map.on('click', function() {
  if (map.scrollWheelZoom.enabled()) {
    map.scrollWheelZoom.disable();
    }
    else {
    map.scrollWheelZoom.enable();
    }
  });

อาจส่งผลให้เกิดพฤติกรรมที่ไม่คาดคิดเมื่อผู้ใช้เริ่มใช้แผนที่จริง

ฉันขอแนะนำให้บางสิ่งบางอย่างที่อาจดูเหมือนบิตที่ใช้งานง่ายของผู้ใช้มากขึ้น - คลิกปิดแผนที่เพื่อเลื่อนเมาส์ปิดการใช้งาน

ตัวอย่างเช่นตั้งค่าของคุณscrollWheelZoom: falseเป็นด้านบนแล้ว:

map.on('focus', function() { map.scrollWheelZoom.enable(); });
map.on('blur', function() { map.scrollWheelZoom.disable(); });

1
การใช้focus/ blurทำให้ฟังก์ชั่นแผนที่ใช้งานง่ายขึ้น
doublesharp

ตกลง วิธีการโฟกัส / เบลอนั้นยอดเยี่ยม ขอบคุณ!
sstringer

ยอดเยี่ยม แต่ต้องใช้วิธีปิดใช้งานการเลื่อนหากแผนที่เต็มหน้าจอและผู้ใช้เลื่อนเข้า - ออกอย่างรวดเร็วอย่างต่อเนื่อง (ทำการเปลี่ยนแปลงหลายทิศทางภายในหนึ่งวินาที) การเลื่อนขึ้นและลงที่สับสนนี้เกิดขึ้นเมื่อติดค้างและไม่สามารถออกจากแผนที่เบราว์เซอร์เต็มรูปแบบเพื่อเข้าถึงเนื้อหาด้านบนหรือด้านล่าง
Loren

6

Leaflet.Sleepจะทำให้งานของคุณง่ายขึ้นและสามารถกำหนดค่าได้มากมาย

โดยพื้นฐานแล้วมันจะปิดเหตุการณ์การเลื่อนเมื่อพวกเขาไม่ต้องการและ "ปลุก" แผนที่ของคุณเมื่อพวกเขาอยู่

ฉันต้องการโพสต์รหัส แต่ค่าเริ่มต้นดูเหมือนจะได้รับมันขวาเพื่อให้คุณมีแนวโน้มที่จะไม่ได้ต้องการอะไรเกิน<script src="path/to/leaflet-sleep.js"></script>และคุณจะมีแผนที่เช่นนี้


0

คุณสามารถทำได้เพียง 3 บรรทัดเหล่านี้:

map.scrollWheelZoom.disable();
map.on('focus', () => { map.scrollWheelZoom.enable(); });
map.on('blur', () => { map.scrollWheelZoom.disable(); });

หรือ:

map.scrollWheelZoom.disable();
this.map.on('click', () => { this.map.scrollWheelZoom.enable();});
this.map.on('mouseout', () => { this.map.scrollWheelZoom.disable();});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.