Google Maps API V3, слушатель ведет себя странно - PullRequest
0 голосов
/ 11 июля 2011

Я создал группу маркеров и информационных блоков, которые я хочу связать вместе через слушателя, хотя слушатель, кажется, срабатывает при запуске без щелчка, и если я пытаюсь запустить слушателя щелчком по маркеру (после закрыв коробку) ничего не происходит.

//Load Markers
function LoadData() {
    //Space Reservation
    var site_arr  = new Array();
    var point_arr = new Array();
    var pasta_arr = new Array();
    //Load All Information
    point_arr = [new google.maps.LatLng(38.629343,-9.191592),
                 new google.maps.LatLng(38.649187,-9.189205)];

    site_arr = ["AAA","BBB"];

    pasta_arr = [1,2];

    //Create Markers and Set InfoBoxes
    for(var i = 0 ; i < site_arr.length ; i++){
        marker_arr[i] = new google.maps.Marker({
               position: point_arr[i]
               ,map: map
               ,title: site_arr[i]
                });

            window_arr[i] = new InfoBox({
             content: site_arr[i]
            });
            google.maps.event.addListener(marker_arr[i], 'click', function(i){
           window_arr[i].open(map,marker_arr[i]);
            }(i));
            }
    return 0;
}

Кто-нибудь имеет представление о том, что происходит?

Решил проблему, я просто выкладываю, потому что это может быть полезно для других ... Спасибо всем!

// Загрузка маркеров function LoadData () { // Бронирование места var site_arr = new Array (); var point_arr = new Array (); var pasta_arr = new Array (); // Загрузить всю информацию point_arr = [new google.maps.LatLng (38.629343, -9.191592), новый google.maps.LatLng (38.649187, -9.189205)];

site_arr = ["AAA",
            "BBB"];

pasta_arr = [1,2];

//Create Markers and Set InfoBoxes
for(i = 0 ; i < site_arr.length ; i++){
    marker_arr[i] = new google.maps.Marker({
        position: point_arr[i]
        ,map: map
        ,title: site_arr[i]
        ,icon: "http://labs.google.com/ridefinder/images/mm_20_red.png"
    });

    marker_arr[i]._info = new InfoBox({
         content: pasta_arr[i];
    });
    attachListener(marker_arr[i]);
}
return 0;

}

функция attachListener (маркер) { google.maps.event.addListener (маркер, «щелчок», функция () { marker._info.open (карта, маркер); }); вернуть 0; }

1 Ответ

0 голосов
/ 11 июля 2011

Вы добавляете не функцию к слушателю, а значение функции. Вы отображаете информационные окна, потому что оцениваете function(i) слушателя на i во время LoadData(). Вторая проблема заключается в том, что даже если вы удалите оценку, вы не получите требуемый индекс i во время вызова слушателя. Правильный путь что-то вроде:

marker_arr[i]._info = window_arr[i];
google.maps.event.addListener(marker_arr[i], 'click', function() {
    var marker = this;
    marker._info.open(map, marker);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...