将openInfoWindowHtml放置到标记数组中

时间:2012-02-06 05:35:08

标签: google-maps google-maps-markers

我在我的标记数组中放置一个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]);
        }
    }

1 个答案:

答案 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)
     });
}