पेज स्क्रॉल करते समय मैप को पैनिंग से कैसे रोकें


10

जब एक HTML पेज में एक नक्शा होता है, और उपयोगकर्ता अपने माउस व्हील का उपयोग करते हुए पृष्ठ को नीचे स्क्रॉल करता है, जब उपयोगकर्ता का माउस मानचित्र पर गुजरता है तो पृष्ठ स्क्रॉल करना बंद कर देगा जबकि मानचित्र स्वयं पैन होगा। डेमो 1 देखें ।

मैं आर्कजीस सर्वर जेएस एपीआई 3.x का उपयोग करके Google मैप्स के लिए एक सरल प्रयोज्य चाल पर विस्तृत व्यवहार का अनुकरण करना चाहूंगा ।

यही है, पृष्ठ को तब तक स्क्रॉल करना चाहिए जब तक कि उपयोगकर्ता मानचित्र के भीतर स्पष्ट रूप से नहीं हटता है, जिस स्थिति में नक्शा पैन करना चाहिए

डेमो 2 में व्यवहार लगभग होता है , जहां पेज आपके माउस के नक्शे पर होने पर भी स्क्रॉल करता है।

map.on("load", function(){
  // Disable navigation by default, so scrolling the page doesn't scroll the map
  map.disableMapNavigation();

  // When the user tries to pan the map, allow this
  map.on('mouse-drag-start', function(){
    map.enableMapNavigation();
  });

  // Restore the no-scroll behaviour when the mouse leaves the map
  map.on('mouse-out', function(){
    map.disableMapNavigation();
  });
});

हालाँकि, मैप पैन तब तक सक्षम नहीं होता जब तक कि आप मैप के भीतर एक बार क्लिक नहीं करते, माउस बटन छोड़ दें और फिर पैन। क्या ब्लॉग पोस्ट में Google मानचित्र के साथ दिखाए गए सहज प्रभाव को प्राप्त करना संभव है?

मैंने और घटनाओं की कोशिश की mouse-drag, लेकिन व्यवहार सभी घटनाओं के लिए समान है।mouse-drag-startmouse-down


1
जब आप घटना enableMapNavigationको फिर से शुरू करने के तुरंत बाद कोशिश कर सकते हैं mouse-drag-start। मुझे घटनाओं के उत्सर्जन के लिए dojo वर्ग के रूप में dojotoolkit.org/reference-guide/1.10/dojo/Evented.html मिला । तो आप मानचित्र पर ड्रैग (या क्लिक) करेंगे -> मैप नेविगेशन सक्षम करें -> एक ही फ़ंक्शन में ड्रैग ईवेंट को इनवॉइस करें (हो सकता है कि यह केवल इनवॉइस करने में सक्षम हो या परमेस की आवश्यकता हो) -> अपने व्यवसाय को ड्रैग करने के बारे में जाएं। यह नीचे माउस को लेने और उसके साथ खींचने में सक्षम हो सकता है। बस उन घटनाओं को अलग-अलग क्रमों में आज़माने का एक कॉम्बो हो सकता है, आदि
Branco

जवाबों:


2

आप प्रयोग करने के लिए एक कारण दे कभी नहीं जिले / enableMapNavigation विधि के बजाय जिले / enableScrollWheelZoom विधि। उत्तरार्द्ध का उपयोग करें।


दुर्भाग्य से यह काम नहीं करता है क्योंकि (1) नक्शे का डिफ़ॉल्ट व्यवहार स्क्रॉल व्हील का उपयोग करने पर पैन (ज़ूम नहीं) करने के लिए होता है, और (2) map.disablePan();स्क्रॉल व्हील पर लागू नहीं होता है, केवल ड्रैग-टू-पैन: jsfiddle.net/g7npfuvn/16
स्टीफन लीड

आह, समस्या यह है कि मैं एक मैक पर परीक्षण कर रहा था, जहां smartNavigationप्रभावी होता है: जब सच है, तो Apple कंप्यूटर के लिए ट्रैकपैड या मैजिक माउस उपयोग के साथ, ज़ूम करने के बजाय पैन स्वाइप करें । अगर मैं इसे गलत पर सेट करता हूं, और पीसी पर परीक्षण करता हूं, तो यह काम करता है। तो ऐसा लगता है कि यह एक मैक पर आर्कजीस सर्वर जेएस एपीआई की एक सीमा है।
स्टीफन लीड

यदि आपने मान को गलत पर सेट किया है, तो आपको ओएस + हार्डवेयर की परवाह किए बिना एक ही व्यवहार को देखना चाहिए। मूसमव इवेंट के लिए और स्मार्टनव को बंद करने का पता लगाने पर विचार करें, जैसा कि यहां पर किया गया है
जैक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.