10

मैं हर जगह चारों ओर खुदाई कर रहा हूं और मुझे यह पता लगाना प्रतीत नहीं होता है। यह मुझे पागल कर रहा है! मैं आम तौर पर जावास्क्रिप्ट के लिए नौसिखिया हूं, इसलिए मैं अनुवाद पर एक उंगली नहीं डाल सकता जो मेरी समस्या को ठीक करेगी। मैंने देखा कि बहुत से लोगों को यह समस्या है, लेकिन वे सभी मुझसे अधिक उन्नत (या सिर्फ उलझन में) कोड का उपयोग करने लगते हैं। वैसे भी, यहां जाता है!Google मैप्स एपीआई v3 - मार्कर सभी शेयर समान जानकारीविंडो

मुझे समस्या है जहां मेरे सभी मार्कर एक ही सामग्री साझा करते हैं।

function initialize() { 
var myOptions = { 
    center: new google.maps.LatLng(34.151271, -118.449537), 
    zoom: 9, 
    mapTypeId: google.maps.MapTypeId.ROADMAP, 
    mapTypeControl: false, 
    streetViewControl: false, 
    panControl: false, 
    zoomControl: true, 
    zoomControlOptions: { style: google.maps.ZoomControlStyle.SMALL }, 
}; 

var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

setMarkers(map, clubs); 

} 

var clubs = [ 
['Poop', 34.223868, -118.601575, 'Dookie'], 
['Test Poop', 34.151271, -118.449537, 'Test Business'] 
]; 

function setMarkers(map, locations) { 
var image = new google.maps.MarkerImage('images/image.png', 
    new google.maps.Size(25, 32), 
    new google.maps.Point(0,0), 
    new google.maps.Point(0, 32) 
); 
var shape = { 
coord: [1, 1, 1, 20, 18, 20, 18 , 1], 
type: 'poly' 
}; 
for (var i = 0; i < locations.length; i++) { 
var club = locations[i]; 
var myLatLng = new google.maps.LatLng(club[1], club[2]); 
var infowindow = new google.maps.InfoWindow(); 
var marker = new google.maps.Marker({ 
    position: myLatLng, 
    map: map, 
    icon: image, 
    shape: shape, 
    title: club[0], 
}); 
google.maps.event.addListener(marker, 'click', function(){ 
    infowindow.setContent(club[3]); 
    infowindow.open(map, this); 
}); 
} 
} 

मुझे पता है कि मैं क्रोधित हूं, लेकिन कोई मेरी मदद करें! : पी

उत्तर

28

समस्या यह है क्योंकि आप मार्कर के लिए इवेंट श्रोता को लूप के भीतर क्लिक कर रहे हैं। तो सभी मार्कर केवल आपके अंतिम मार्करों के लिए सामग्री प्राप्त कर लेते हैं। इसके बजाए इसे आजमाएं। एक नया वैश्विक समारोह बनाएँ:

function bindInfoWindow(marker, map, infowindow, html) { 
    marker.addListener('click', function() { 
     infowindow.setContent(html); 
     infowindow.open(map, this); 
    }); 
} 
फिर अपने पाश के भीतर

, इस बदलें:

google.maps.event.addListener(marker, 'click', function(){ 
    infowindow.setContent(club[3]); 
    infowindow.open(map, this); 
}); 
इस के साथ

:

// add an event listener for this marker 
bindInfoWindow(marker, map, infowindow, club[3]); 
+0

धन्यवाद डंकन! खूबसूरती से काम करता है और ठीक करने के लिए 2 सेकंड लगते हैं। आप ही है वह आदमी! – Mikey

+0

@ डंकन आप बहुत बहुत धन्यवाद! – Luftwaffe

+0

हाय दोस्तों, यह समाधान भी मेरे लिए काम किया, बहुत बहुत धन्यवाद। हालांकि मैं समझना चाहता हूं कि यह इस तरह क्यों काम करता है, न कि दूसरे? हम अभी भी लूप के भीतर श्रोता को बाध्य कर रहे हैं, हालांकि कोड अब एक फ़ंक्शन में लपेटा गया है। इससे कोई फर्क क्यों पड़ता है? धन्यवाद! – WPalombini

0

मार्कर ऑब्जेक्ट (var marker = new ...) को सेट करते समय इस पंक्ति को बदलें: "शीर्षक: क्लब [0]," से "शीर्षक: क्लब [i],"। हां, बस 0 को i में बदलें।

समस्या को हल करना चाहिए।

उदाहरण के साथ Google मानचित्र API पर एक ट्यूटोरियल के लिए इस लिंक को आज़माएं।

http://code.google.com/apis/maps/documentation/javascript/tutorial.html

यह बहुत आसान और उपयोगी होना चाहिए।

+0

जब मैं के साथ '0' की जगह की कोशिश की 'i' यह मेरे आखिरी मार्कर को हटा दिया और उन्हें सभी बेकार बना दिया। '0' मेरे मार्कर के नाम से संदर्भित है। – Mikey

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