2012-09-11 18 views
6

के साथ ज़ूम अक्षम करें मैं अपनी वेबसाइट पर कस्टम ओएसएम मानचित्र प्रदर्शित करने के लिए ओपनलेयर का उपयोग कर रहा हूं।ओपनलेयर

मेरे पास कुछ बिंदुओं का सम्मान है: मानचित्र को ठीक करना होगा (जिसका अर्थ है कि हम इसे खींच नहीं सकते हैं या ज़ूम नहीं कर सकते हैं)।

मुझे ज़ूम, के साथ कोई समस्या है, मैं माउस के साथ ज़ूम अक्षम करने का प्रबंधन नहीं कर सकता। क्या किसी के पास टिप है?

map = new OpenLayers.Map('map'); 
map.events.remove("move"); 
map.events.remove("movestart"); 
map.events.remove("moveend"); 
map.events.remove("zoomend"); 
map.events.remove("mouseover"); 
map.events.remove("mouseout"); 
map.events.remove("mousemove"); 
map.events.remove("zoomstart"); 
var nav = new OpenLayers.Control.Navigation({ 
    defaultDblClick: function(event) { return ; } 
}); 
map[index].addControl(nav); 

इसके अलावा, अगर किसी के पास सभी नेविगेशन घटनाओं को उससे अधिक आसान बनाने का कोई सुझाव है, तो इसकी सराहना की जाएगी।

उत्तर

10

एक खाली सरणी पारित करके अपने नक्शे पर डिफ़ॉल्ट नियंत्रण अक्षम करें:

var map = new OpenLayers.Map('map', { controls: [] }); 
+0

हाँ, आसान! धन्यवाद। – GeoffreyB

3

आप निम्न कार्य कर सकते हैं:

map = new OpenLayers.Map({ 
    // options here ... 
} 

var Navigation = new OpenLayers.Control.Navigation({ 
    'zoomWheelEnabled': false, 
    'defaultDblClick': function (event) { 
     return; 
    } 
}); 

map.addControl(Navigation); 

var NavigationControls = map.getControlsByClass('OpenLayers.Control.Navigation') 
    , i; 

for (i = 0; i < NavigationControls.length; i++) { 
    NavigationControls[i].disableZoomWheel(); 
} 

मिले here

अक्षम ड्रैगिंग जैसे अन्य विकल्पों के लिए, आप documentation पर एक नज़र डाल सकते हैं और उपरोक्त कोड को कस्टमाइज़ कर सकते हैं।

1

कुछ तर्क के आधार पर ज़ूम ईवेंट को प्रतिबंधित करने का एक और आसान तरीका यहां है। क्योंकि OpenLayers does not एक 'beforezoom'

map.zoomToProxy = map.zoomTo; 
map.zoomTo = function (zoom,xy){ 
// if you want zoom to go through call 
map.zoomToProxy(zoom,xy); 
//else do nothing and map wont zoom 
}; 

इस कैसे काम करता है प्रदान करते हैं:

गतिविधि जूमिंग के किसी भी प्रकार के लिए, OpenLayers एपीआई अंत में समारोह zoomTo कहा जाता है कहते हैं। तो इसे ओवरराइड करने से पहले, हम उस फ़ंक्शन को 'zoomToProxy' नामक एक नए फ़ंक्शन पर कॉपी करते हैं। हम इसे ओवरराइड करते हैं और हमारे सशर्त ज़ूम तर्क जोड़ते हैं। अगर हम चाहते हैं होने के लिए ज़ूम हम सिर्फ नए प्रॉक्सी समारोह :)

+0

बहुत बहुत धन्यवाद !!! यह अद्भुत तरीका है। धन्यवाद – javagc

4

महदी परिणामों के दृष्टिकोण को सरल बनाना

var i, l, c = map.getControlsBy("zoomWheelEnabled", true); 
for (i = 0, l = c.length; i < l; i++) { 
    c[i].disableZoomWheel(); 
} 

में फोन इस तरह से माउस व्हील पर ज़ूम अक्षम करने जैसे नक्शे के निर्माण पर विकल्पों को अनुकूलित करने की आवश्यकता नहीं है बिना किसी नियंत्रण के मानचित्र बनाकर (हालांकि यह कुछ हद तक Lght द्वारा अनुरोध किया गया था)। इसके अलावा ज़ूम काम को फिर से सक्षम करने के लिए समान रूप से काम करता है।

इसके अलावा, कक्षा नाम के बजाय सक्षम संपत्ति मिलान करने वाले नियंत्रण खोज zoomWheelEnabledOpenLayers.Control.Navigation से प्राप्त कस्टम नियंत्रण का समर्थन कर रहा है।

+0

मैं इसका परीक्षण नहीं कर सकता, लेकिन यह मेरी राय में ऐसा करने का एक और अच्छा तरीका प्रतीत होता है। भले ही मैं जानना चाहता था कि आप लोग ओपनलेयर में मूसहेल ज़ूम को कैसे अक्षम कर रहे थे, मेरा लक्ष्य सब कुछ हटाना था (ज़ूम केवल एक ही चीज थी)। आपके उत्तर के लिए धन्यवाद, मुझे आशा है कि इससे अधिक लोगों की मदद मिलेगी! – GeoffreyB

+0

यह पूरी तरह से काम किया! अब तक देखे गए किसी भी अन्य समाधान से अधिक सीधे आगे। – user1919

+0

और फिर से सक्षम करने के लिए: 'var i, l, c = map.getControlsBy (" zoomWheelEnabled ", false); (i = 0, l = c.length; i igneosaur

3

ओपनलेयर 3 के लिए इंटरैक्शन सरणी को खाली होने की भी आवश्यकता है।

var map = new ol.Map({ 
    controls: [], 
    interactions: [] 
}); 
संबंधित मुद्दे