Помещение openInfoWindowHtml в массив маркеров - PullRequest
0 голосов
/ 06 февраля 2012

У меня была проблема с размещением openInfoWindowHtml в моем массиве маркеров.Без addListener внутри цикла for 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 Ответ

1 голос
/ 06 февраля 2012

У вас есть 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)
     });
} 
...