Проблема в вашем звонке на addListener()
Пока вы перебираете свой набор записей и снова и снова записываете javascript для добавления маркера на карту, вы вызываете прослушиватель событий только один раз. Кроме того, вы на самом деле никогда не создаете объекты типа InfoWindow , поэтому вам никогда не нужно будет вызывать open()
.
Быстрое и грязное решение заключается в добавлении этого после создания marker
, но до завершения цикла While
.
var infowindow = new google.maps.InfoWindow({
content: '<%=(locations_haslatlong.Fields.Item("field_or_fields_containing_data_for_info_window").Value)%>'
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
Но не делайте этого - вы используете VB для написания полностью избыточного Javascript для вас, когда вы можете использовать VB для извлечения того, что вам нужно, а затем позволить Javascript делать ту работу, которая вам нужна для данных .
лучший способ сделать то, что вы пытаетесь сделать, - переписать ваш VB, чтобы создать массив объектов Javascript, каждый из которых содержит информацию о парке. Затем используйте Javascript для обхода этого массива и установки маркеров и связанных с ними информационных окон.
Изложение предлагаемого решения:
// Create an array to hold a series of generic objects
// Each one will represent an individual marker, and contain all the
// information we need for that marker. This way, we can reuse the data
// on the client-side in other scripts as well.
var locations_array = [<%
While (
(Repeat1__numRows <> 0)
AND (NOT locations_haslatlong.EOF)
)
%>
{
latitude: <%=(locations_haslatlong.Fields.Item("llat").Value)%>,
longitude: <%=(locations_haslatlong.Fields.Item("llong").Value)%>,
title: "<%=(locations_haslatlong.Fields.Item("ldescription").Value)%>",
infoWindowContent: "<%=(locations_haslatlong.Fields.Item("field_or_fields_containing_data_for_info_window").Value)%>"
},
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
locations_haslatlong.MoveNext()
Wend
%>];
var x = locations_array.length;
while (--x) {
// Grab an individual park object out of our array
var _park = locations_array[x]
var myLatlng = new google.maps.LatLng(_park.latitude,_park.longitude);
var marker = new google.maps.Marker({
map: map,
position: myLatlng,
title: _park.title,
icon: 'http://google-maps-icons.googlecode.com/files/park.png',
clickable: true,
});
var infowindow = new google.maps.InfoWindow({
content: _park.infoWindowContent
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}