2013-04-12 10 views
5

मेरे पास दो मार्कर हैं जो दोनों को जोड़ने वाली पॉलीलाइन के साथ हैं। मैंने मार्करों और पॉलीलाइन पर ईवेंट पर क्लिक किया है, लेकिन मैं पॉलीलाइन को एक नया मार्कर रखने या इसके स्ट्रोक को बढ़ाने के बिना क्लिक करना आसान बनाने की कोशिश कर रहा था। इसलिए मैंने एक गोलाकार आइकन बनाया और पॉलीलाइन पर रखा, लेकिन मैं इसे क्लिक करने योग्य नहीं बना सकता। क्या यह संभव है?Google मानचित्र: क्लिक करने योग्य पॉलीलाइन आइकन

इस धागे को देखा, लेकिन यह भी बताता है कि आइकन कैसे क्लिक करने योग्य है। मैंने इसका कोड स्रोत खोजा लेकिन वह एक केएमएल परत जोड़ता है। मैं ऐसा नहीं करना चाहता था। Google Maps: Attaching events on polyline icons

Google मानचित्र ओवरले एपीआई की खोज की लेकिन क्लिक घटनाओं को सुनने के लिए कोई इंटरफ़ेस नहीं मिला। https://developers.google.com/maps/documentation/javascript/overlays#Polylines

मैंने एक ईवेंट श्रोता संलग्न करने की भी कोशिश की लेकिन काम नहीं किया। मुझे संदेह है कि यह वास्तविक मार्कर या ऑब्जेक्ट को जोड़ने के बिना नहीं किया जा सकता है, लेकिन अगर किसी और को भी ऐसी ही समस्या है तो मैं किसी भी सुझाव की सराहना करता हूं :)

अग्रिम धन्यवाद!

मेरे कोड:

var pathSymbol = { 
    path: google.maps.SymbolPath.CIRCLE, 
    scale: 8, 
    strokeColor: '#228B22' 
}; 

var conPath = new google.maps.Polyline({ 
    path: conCoord, 
     strokeColor: "#228B22", 
     strokeOpacity: 0.7, 
     icons: [{ 
      icon: pathSymbol, 
      offset: '50%' 
     }], 
     strokeWeight: 2 
}); 

conPath.setMap(map); 


google.maps.event.addListener(conPath, 'click', (function(l,conCoord) { 
    return function() { 
      infowindowPath.setContent("<b>Ligação "+connections[l].id); 
     infowindowPath.setPosition(new google.maps.LatLngBounds(conCoord[1], conCoord[0]).getCenter()); 
      infowindowPath.open(map); 
     } 
})(l,conCoord)); 

उत्तर

5

मैं भी इस कार्यशीलता के लिए एक की जरूरत है, लेकिन दुर्भाग्य से यह संभव नहीं है - मैं लगभग सकारात्मक हूँ (देखें मेरी demo)। कारण मैं इतना कहना है क्योंकि:

  1. मैं अलग अलग तरीकों की बहुत सारी की कोशिश की है, लेकिन केवल पॉलीलाइन घटना
  2. यह स्पष्ट गूगल के दस्तावेज में दर्ज नहीं किया गया है प्राप्त करता है
  3. निम्नलिखित क्या भागों के

    दस्तावेज के अर्थ है:

    documentation on Symbols से:

    एक प्रतीक एक वेक्टर आधारित छवि है जिसे मार्कर या पॉलीलाइन ऑब्जेक्ट पर प्रदर्शित किया जा सकता है।

    documenation on the AddEventListener से:

    addListener(instance:Object, eventName:string, handler:Function)

    दिया वस्तु उदाहरण के लिए दी गई घटना नाम दिया श्रोता समारोह जोड़ता है। इस श्रोता के लिए एक पहचानकर्ता लौटाता है जिसका उपयोग RemoveListener() के साथ किया जा सकता है।

घटनाक्रम उदाहरणोंवस्तु के साथ संलग्न किया जा सकता है (इस तरह के एक मार्कर या पॉलीलाइन के रूप में)। चूंकि प्रतीकों वेक्टर-आधारित छवियां हैं जिन्हें पर पॉलीलाइन पर प्रस्तुत किया गया है, वे इसके भीतर निहित हैं, और आधिकारिक तौर पर ऑब्जेक्ट उदाहरण नहीं हैं।जाहिर है, इससे उन्हें खुद से जुड़े कार्यक्रमों के लिए अपात्र बना दिया जाता है।

अब, मुझे अभी भी संदेह में छोड़ दिया गया है कि मेरा तर्कसंगत यह दर्शाता है कि एक प्रतीक पॉलीलाइन का हिस्सा है जिसका अर्थ है कि पॉलीलाइन से जुड़ी वही घटनाएं भी प्राप्त होनी चाहिए। लेकिन, मेरा परीक्षण में, यह मामला है (demo here: एक पॉलीलाइन पर प्रतीक की परवाह किए बिना आकार, कोई भी ईवेंट प्राप्त नहीं होता है):

var mySymbol = { 
    path: google.maps.SymbolPath.CIRCLE, 
    scale: 25, 
    strokeWeight: 5, 
    fillOpacity: .2 
}; 

var myPolyline = new google.maps.Polyline({ 
    icons: [{ 
     icon: mySymbol, 
     fixedRotation: true, 
     offset: '50%', 
    }], 
    path: [polylineCenter, polylineEnd], 
    strokeColor: 'black', 
    strokeOpacity: 1, 
    strokeWeight: 5, 
    map: myMap 
}); 

// works since <myPolyline> is an instance of an Object 
google.maps.event.addListener(myPolyline, 'click', function() { 
    alert('Polyline clicked!'); 
}); 

// doesn't work :-(since <mySymbol> is an Object literal 
google.maps.event.addListener(mySymbol, 'click', function() { 
    alert('Symbol clicked!'); 
}); 
+0

हाँ कि निष्कर्ष मैं भी पहुँच मैं अंततः इसे गिरा दिया है । जवाब के लिए धन्यवाद। –

संबंधित मुद्दे