7

मैं Google मानचित्र V3 (संलग्न छवि) के साथ इन्फोबॉक्स का उपयोग कर रहा हूं। इन्फोबॉक्स पर क्लिक करते समय, मैं एक विवरण पृष्ठ पर जाना चाहता हूं। लेकिन मैं infobox पर एक क्लिक श्रोता जोड़ने में सक्षम नहीं हूँ। यहाँ कोड मैं का उपयोग कर रहा है:Google मानचित्र पर ईवेंट जोड़ने में असमर्थ Infobox

enter image description here

यह मेरा इन्फोबॉक्स config है:

var ib = new InfoBox({ 
     alignBottom : true, 
     disableAutoPan: false, 
     maxWidth: 0, 
     pixelOffset: new google.maps.Size(-125, -50), 
     zIndex: null, 
     closeBoxURL: "", 
     infoBoxClearance: new google.maps.Size(1, 1), 
     isHidden: false, 
     pane: "floatPane", 
     enableEventPropagation:false 
    }); 

और मैं इस तरह इस इन्फोबॉक्स को श्रोता कहा:

google.maps.event.addListener(ib, 'domready', function() { 
     if(Ext.get(ib.div_)){ 
      Ext.get(ib.div_).on('click', function(){ 
       console.log('test on click') 
      }, this); 

      Ext.get(ib.div_).on('mousedown', function(){ 
       console.log('test on click') 
      }, this); 
     } 
    }); 

जबकि enableEventPropagation = false, घटना एमएपी को प्रचारित नहीं करती है लेकिन इन्फोबॉक्स पर कोई घटना काम नहीं कर रही है।

जबकि enableEventPropagation = true, ईवेंट (क्लिक, mousedown) काम करता है लेकिन इन्फोबॉक्स के दूसरे भाग पर क्लिक करके, यह मुझे मानचित्र या अन्य मार्कर पर ले जाता है।

कोई विचार यह कैसे हल करें?

+0

क्या आपने अपनी समस्या का समाधान किया? यदि हां, तो कृपया अपना उत्तर हमारे साथ साझा करें। – rpelluru

उत्तर

0

आप अपने इन्फॉर्क्स की सामग्री जो भी हो, श्रोता को संलग्न कर सकते हैं।

var boxText = document.createElement('div'); 
var myOptions = { 
    content: boxText, 
    ... 
} 
var ib = new InfoBox(myOptions); 
ib.open(theMap, marker); 
boxText.setAttribute('onclick', 'alert("InfoBox clicked")'); 

क्या यह आपके लिए काम करेगा?

3

आपको domready ईवेंट को इन्फोबॉक्स के ईवेंट में जोड़ने की आवश्यकता है लिस्टनर Google मानचित्र 'को नहीं। इन्फोबॉक्स के एचटीएमएल स्क्रीन पर होने के बाद ही, आप ईवेंट को बाध्य कर सकते हैं। बहु ईवेंट बाध्यकारी को रोकने के लिए, एक नया लोड करने से पहले अन्य इन्फोबॉक्स बंद करें।

infobox= new InfoBox(); 
google.maps.event.addListener(marker, 'click', function() { 
    infobox.close(); 
    infobox= new InfoBox({ ... }); 
    infobox.open(map, this); 
    infobox.addListener("domready", function() { 
    $("#target").on("click", function(e) { /* do something */ }); 
    }); 
}); 
संबंधित मुद्दे