我在我的标记数组中放置一个openInfoWindowHtml时遇到了问题。如果没有for循环中的addListener,map.addOverlay(markerArray [i])就可以正常工作。我的代码有什么问题?谢谢!
function addMarkers(){
var tempMarker;
var blueIcon = new GIcon(G_DEFAULT_ICON);
blueIcon.image = "http://www...com/.../.png";
// Set up our GMarkerOptions object
markerOptions = { icon:blueIcon };
for(ctr=0;ctr<default_address.length;ctr++){
tempLatLng = new GLatLng(default_address[ctr][0], default_address[ctr][1]);
tempMarker = new GMarker(tempLatLng,markerOptions);
GEvent.addListener(tempMarker, "click", function()
{tempMarker.openInfoWindowHtml("HI")});
markerArray.push(tempMarker);
}
displayMarkers();
}
function displayMarkers(){
map.clearOverlays();
var i;
for (i = 0; i < markerArray.length; i++) {
map.addOverlay(markerArray[i]);
}
}
答案 0 :(得分:1)
你有marker.openInfoWindowHtml
,但是marker
是什么,它在这个函数的任何地方都没有定义。那可能是markerArray[i].openInfoWindowHtml
吗?我假设markerArray是一个包含标记对象的全局变量。
更新:关于所有标记在最后一个标记的位置(以及内容)打开它们的信息的问题,这应该有效。
function addMarkers(){
...
for(ctr=0;ctr<default_address.length;ctr++){
tempLatLng = new GLatLng(default_address[ctr][0], default_address[ctr][1]);
tempMarker = new GMarker(tempLatLng,markerOptions);
// add an event listener for this marker
bindInfoWindow(tempMarker, "HI");
markerArray.push(tempMarker);
}
}
// create a new global function for this
function bindInfoWindow(marker, html) {
GEvent.addListener(tempMarker, "click", function() {
marker.openInfoWindowHtml(html)
});
}