2012-09-10 13 views
5

में एकाधिक मार्करों के लिए InfoWindows कैसे बनाएं मेरे पास निम्न कोड है और यह सही ढंग से उन सभी मार्करों को बनाता है जो मैं संग्रहीत कर रहा हूं लेकिन फिर जब मैं उनमें से किसी पर क्लिक करता हूं तो केवल अंतिम InfoWindow बनाया जाता है और यह केवल प्रकट होता है आखिरी मार्कर कोई फर्क नहीं पड़ता कि मैं किस मार्कर पर क्लिक करता हूं। मुझे लगता है कि मेरे पास लूप के लिए उसी वैरिएबल का इस्तेमाल किया जा रहा है। जैसा कि मैंने देखा कि इस पर कुछ अन्य उपयोगकर्ताओं के लिए काम किया है अतः लेकिन तब कोई InfoWindows दिखाईफॉर लूप

google.maps.event.addListener(marker, 'click', function() { 
     infowindow.setContent({{record.description|json_encode|safe}}); 
     infowindow.open(map, this); 
     }); 

:

{% for record in records %} 

//need to do the JSON encoding because JavaScript can't have Jinja2 variables 
//I need the safe here because Jinja2 tries to escape the characters otherwise 
var GPSlocation = {{record.GPSlocation|json_encode|safe}}; 
var LatLng = GPSlocation.replace("(", "").replace(")", "").split(", ") 
var Lat = parseFloat(LatLng[0]); 
var Lng = parseFloat(LatLng[1]); 

var markerLatlng = new google.maps.LatLng(Lat, Lng); 

var marker = new google.maps.Marker({ 
    position: markerLatlng, 
    title: {{record.title|json_encode|safe}} 
}); 

var infowindow = new google.maps.InfoWindow({ 
    content: "holding..." 
    }); 

google.maps.event.addListener(marker, 'click', function() { 
    infowindow.setContent({{record.description|json_encode|safe}}); 
    infowindow.open(map, marker); 
    }); 

//add the marker to the map 
marker.setMap(map); 

{% endfor %} 

मैं यह करने के लिए घटना श्रोता को बदलने की कोशिश की। क्या यहां कोई स्पष्ट त्रुटियां हैं? , तो

// Global var 
    var infowindow = new google.maps.InfoWindow(); 

और पाश के अंदर:

उत्तर

5

आप एक अलग समारोह में मार्करों बनाने की जरूरत

var markerLatlng = new google.maps.LatLng(Lat, Lng); 
    var title = {{record.title|json_encode|safe}} 
    var iwContent = {{record.description|json_encode|safe}} 
    createMarker(markerLatlng ,title,iwContent); 

अंत:

function createMarker(latlon,title,iwContent) { 
     var marker = new google.maps.Marker({ 
      position: latlon, 
      title: title, 
      map: map 
    }); 


google.maps.event.addListener(marker, 'click', function() { 
    infowindow.setContent(iwContent); 
    infowindow.open(map, marker); 
    }); 

    } 

Explanation here.

+1

आह उस यह सब स्पष्ट करता है। मदद के लिए धन्यवाद मैं वास्तव में इसकी सराहना करता हूं। – clifgray

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