0

我面临一个开始让我发疯的问题......
我相信你会比我更了解为什么第二个标记监听器不起作用。:-(

在这段代码中,我从 JSON 格式的 Ajax 查询中获取了一些项目。

这是javascript代码:

// Get all items in JSON format
function getItems()
{
    // Ajax call
    $.getJSON("/index/test", function(data) {
        createMenu(data);
        fillMap(data);
    });
}

function fillMap(data){
    // For each
    $.each(data, function(key, item) {
        // Create markers
        var latLon = new google.maps.LatLng(item.lat,item.lon);
        marker = new google.maps.Marker({
            position:     latLon,
            map:         map,
            title:        'Index: ' + item.id,
        });
        // Set marker on the map
        marker.setMap(map);

        // Listener 1
        google.maps.event.addListener(marker, "click", function() {
            map.setCenter(marker.getPosition());
        });

        // Listener 2 - 
        google.maps.event.addListener($('#resultList-'+item.id)[0], 'click', function() {
            map.setCenter(marker.getPosition());
        });

     });
}


//Create the HTML menu
function createMenu(data){
    var items = [];
    //For each items
    $.each(data, function(key, item) {
        var imgHtml = '<img class="shadow" src="../images/item.png" height="48" width="48" alt="photo">';
        // Create the HTML li tag
        var html = '<li id="resultList-' + item.id + '" class="resultList">' + imgHtml + item.nom + ' ' + item.prenom + '<br/>' + item.adresse + '<br/>' + item.ville + ', ' + item.pays + '</li>';
        items.push(html);
    });

    // Fill the div
    $('<ul/>', {
        'id': 'resultList',
        'class': 'resultList',
        html: items.join('')
    }).appendTo('#divList');
    //End...
}

提前谢谢了!塞德里克。

4

1 回答 1

0

如果要在非 gmaps 对象中添加事件侦听器,则应使用google.maps.event.addDomListener

所以你可以试试这个:

google.maps.event.addDomListener(document.getElementById('resultList-' + item.id), 'click', function() {
    map.setCenter(marker.getPosition());
});
于 2013-04-10T22:04:15.457 回答