Google maps api 3 如何获取外部链接以触发谷歌地图标记上的点击事件?

Google maps api 3 如何获取外部链接以触发谷歌地图标记上的点击事件?,google-maps-api-3,Google Maps Api 3,我试图弄清楚如何在打开信息窗口的相应地图标记上显示外部div触发器单击事件中的链接。我认为我的代码是可靠的,除了可能我尝试复制位置数据数组,以获得单击功能,以便能够访问数组,因为我遇到了范围障碍-我只是不知道如何使其正常工作。有人能解释一下我需要在代码中修改什么吗?谢谢 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transiti

我试图弄清楚如何在打开信息窗口的相应地图标记上显示外部div触发器单击事件中的链接。我认为我的代码是可靠的,除了可能我尝试复制位置数据数组,以获得单击功能,以便能够访问数组,因为我遇到了范围障碍-我只是不知道如何使其正常工作。有人能解释一下我需要在代码中修改什么吗?谢谢

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<title>Untitled Document</title>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false" type="text/javascript"></script>
<script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/src/infobox.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script type="text/javascript">


var gmarkers = []; 

function initialize() {
var locations = [
         ['DESCRIPTION', 41.926979, 12.517385, 3],
         ['DESCRIPTION', 41.914873, 12.506486, 2],
         ['DESCRIPTION', 61.918574, 12.507201, 1]
    ];




    window.map = new google.maps.Map(document.getElementById('map'), {
        panControl: false,
        zoomControl: false,
        scaleControl: false,
        streetViewControl: false,
        mapTypeControl: false,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });



    var infowindow = new google.maps.InfoWindow();
    var bounds = new google.maps.LatLngBounds();


    // CREATE THE MARKERS ON THE MAP FROM THE ARRAY DATA
    for (i = 0; i < locations.length; i++) {
            marker = new google.maps.Marker({
                position: new google.maps.LatLng(locations[i][1], locations[i][2]),
                map: map
            });

    gmarkers.push(marker);
    bounds.extend(marker.position);

    // ADD A LINK FOR THIS MARKER TO THE DIV, WHEN CLICKED, IT SHOULD TRIGGER THE MARKER CLICK / INFO WINDOW FOR COORESPONDING MARKER
    $('#listdiv').append('<p><a href="javascript:show(' + i + ')" id="link' + i + '">' + locations[i][0] + '</a>');


    google.maps.event.addListener(marker, 'click', (function (marker, i) {
        return function () {
            infowindow.setContent(locations[i][0]);
            infowindow.open(map, marker);
        }
    })(marker, i));

}

map.fitBounds(bounds);

var listener = google.maps.event.addListener(map, "idle", function () {
    //map.setZoom(10); // NO LONGER NEED, SINCE FITBOUNDS SCALES VIEW TO SHOW ALL MARKERS?
    google.maps.event.removeListener(listener);
});

}

// THIS FUNCTION IS SUPPOSED TO BE CALLED ON THE EXTERNAL LINK CLICKS - SHOULD OPEN THE COORESPONDING MARKER/INFO WINDOW.
function show(i) {
    google.maps.event.trigger(gmarkers[i], 'click');
    alert("I see a click.");

}

</script>
</head>

<body onload="initialize();" marginheight="0" marginwidth="0" topmargin="0" leftmargin="0">
    <div id="map" style="width: 100%; height: 300px;"></div>
    <div id="listdiv" style="width:100%; border: 2px solid blue; color: black; font-family: Arial, Helvetica, sans-serif; font-size:14px;"></div>
</body>
</html>
删除此行:

gmarkers = locations.concat(); 
创建标记后添加此行:

gmarkers.push(marker);

控制台日志上是否有错误?您确定包含jquery库吗?检查src属性,它遗漏了http:partI,我真的不明白你在用Gmarker做什么。您应该在那里有标记,而不是位置数组的串联。@alkis jquery库应该很好-我使用的是这里列出的内容:。。。我现在甚至可以删除它——我现在的重点是让外部链接正常工作并触发标记点击。locations数组是marker/info窗口数据的来源-工作正常,我测试/添加了gmarkers数组locations数组的副本以尝试访问数据,因为我有范围问题,外部链接单击功能无法“查看”数组数据。所以gmarkers只是我测试的结果,仅此而已。在控制台上根本没有错误。在大多数示例中,gmarkers数组是一个google.maps.Marker对象数组。如果要在该数组的某个元素上触发一个单击事件,则需要这样做。谢谢。工作得很有魅力。我真的很感谢你的帮助。这就是我在第二条评论中所说的。