Note that there are some explanatory texts on larger screens.

plurals
  1. POGoogle Maps API - unable to set several infoWindows on several markers
    primarykey
    data
    text
    <p>I have the following code: </p> <pre><code>&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;script src="http://code.jquery.com/jquery-latest.min.js"&gt;&lt;/script&gt; &lt;meta name="viewport" content="initial-scale=1.0, user-scalable=no" /&gt; &lt;style type="text/css"&gt; html { height: 100% } body { height: 100%; margin: 0px; padding: 0px } #map_canvas { height: 100% } &lt;/style&gt; &lt;script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"&gt; &lt;/script&gt; &lt;script src="http://code.jquery.com/jquery-latest.min.js"&gt;&lt;/script&gt; &lt;script type="text/javascript"&gt; function initialize() { var cities = {{json|safe}}; /* for (i in cities) { // 0, 1 // document.write(cities[i]['fields']['name'] +'&lt;br /&gt;'); document.write(cities[i]['fields']['x'] +'&lt;br /&gt;'); document.write(cities[i]['fields']['y'] +'&lt;br /&gt;'); document.write('&lt;br /&gt;'); } /* */ var center = new google.maps.LatLng(-22.784791,-45.088806); var myOptions = { zoom: 8, center: center, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); var citiesLoc = new Array(); // var flightPlanCoords = new Array(); var infoBoxes = new Array(); var markers = new Array(); for (var i in cities) { // document.write(cities[i]['fields']['name'] ); citiesLoc[i] = new google.maps.LatLng(cities[i]['fields']['x'],cities[i]['fields']['y']); // flightPlanCoords.push(new google.maps.LatLng(cities[i]['fields']['x'],cities[i]['fields']['y'])); infoBoxes[i] = new google.maps.InfoWindow({ content: "&lt;div&gt;" + cities[i]['fields']['name'] + "&lt;/div&gt;" }); markers[i] = new google.maps.Marker({ position: citiesLoc[i], map: map, title: cities[i]['fields']['name'] }); google.maps.event.addListener(markers[i], 'click', function() { infoBoxes[i].open(map, markers[i]); }); }; // document.write(infoBoxes[1]['content']); /* var flightPath = new google.maps.Polyline({ path: flightPlanCoords, strokeColor: "#0000ff", strokeOpacity: 1.0, strokeWeight: 5 }); flightPath.setMap(map); */ } &lt;/script&gt; &lt;/head&gt; &lt;body onload="initialize()"&gt; &lt;div id="map_canvas" style="width:100%; height:100%"&gt;&lt;/div&gt; &lt;/body&gt; &lt;/html&gt; </code></pre> <p>Which sets up two markers with two infowindows attached, but when I click either one, only one of them (number 1 of 2, zero-indexed) shows up. If I write it like this:</p> <pre><code> google.maps.event.addListener(markers[0], 'click', function() { infoBoxes[0].open(map, markers[0]); }); google.maps.event.addListener(markers[1], 'click', function() { infoBoxes[1].open(map, markers[1]); }); </code></pre> <p>then it works just fine. What am I missing?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload