2013-09-08 3 views
0

Долгое время я не был в состоянии добавить прослушиватель событий в ссылках в винодельческих AZ раздел на моем сайте (зеленая кнопка над картой):добавив слушатель событий, который работает с Google Maps InfoWindow

http://www.michiganwinetrail.com/

проблема заключается в том, что я уже создал цикл, который является довольно сложным

for (var i = 0; i <= locations.length; i++) { 

    locations[i][0] = new google.maps.Marker({ 
     position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
     title: locations[i][3], 
     map: map, 
     content: locations[i][4] 
    }); 

    var infowindow = new google.maps.InfoWindow({}); 

    google.maps.event.addListener(locations[i][0], 'click', function() { 
     infowindow.setContent(this.content); 
     infowindow.open(map, this); 
    }); 

} 

что мне нужно, чтобы добавить к этой петле, которая позволит моему моему infowindows всплывал, когда я нажимаю на ссылки в вино ries A-Z? Я хотел бы остаться в стороне от JQuery, если вообще возможно

+0

Вы уже загрузили jQuery дважды на своей странице, чтобы я не думал, что вам не следует его использовать. Вот вопрос, который может помочь: http://stackoverflow.com/questions/15192164/jquery-google-maps-open-infowindow-on-click – Joe

ответ

0

сделать уникальный идентификатор для вашего местоположения в массиве таких местах, как это:

var locations[0] = ['twoLads',44.932317,-85.492437, '2 Lads', twoLads_content]; 
var locations[1] = ['belLago',44.8529,-85.7663, 'Bel Lago', belLago_content]; 
//etc... 

Теперь вы можете добавить клик слушателя к каждому «Карта It! " link:

<tr class="rowClass"> 
<td>Bel Lago</td> 
<td><a href="http://bellago.com/">Visit Website</a></td> 
<td class="mapIt"><a onclick="openMarker(1);">Map It!</a></td> 
</tr> 

Затем вы можете определить функцию для обработки открытия информационного окна.

for (var i = 0; i <= locations.length; i++) { 

locations[i][0] = new google.maps.Marker({ 
    position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
    title: locations[i][3], 
    map: map, 
    content: locations[i][4] 
}); 

var infowindow = new google.maps.InfoWindow({}); 

google.maps.event.addListener(locations[i][0], 'click', function() { 
    infowindow.setContent(this.content); 
    infowindow.open(map, this); 
}); 

} 

window.openMarker = function(locationId){ 
    // Set content according to the locationId 
    infowindow.setContent(locations[locationId][4]); 
    // Open the infowindow at the location of the appropriate marker which gets stored in array key 0 in your loop above. 
    infowindow.open(map, locations[locationId][0]); 
} 
+0

да, но где же в цикле эта вторая часть будет идти? – Philip

+0

Вторая часть не входит в петлю вообще. Это просто объявлено один раз. Я обновлю свой ответ, чтобы отразить полный код. –

+0

ОК, так что мой следующий вопрос: почему я должен их хранить так, а не местоположения [0] уже первая строка значений в массиве? – Philip