【问题标题】:Google map multiple markers infowindow open from external link谷歌地图多个标记信息窗口从外部链接打开
【发布时间】:2014-07-08 05:34:45
【问题描述】:

创建了一个谷歌标记地图,并在地图旁边列出了位置名称 - 它工作正常

Demo

目标- 当我点击列出的每个位置的名称时,如何打开相应的信息窗口

代码

var markers = [
    ['Bondi Beach', -33.890542, 151.274856],
    ['Coogee Beach', -33.923036, 151.259052],
    ['Cronulla Beach', -34.028249, 151.157507],
    ['Manly Beach', -33.80010128657071, 151.28747820854187],
    ['Maroubra Beach', -33.950198, 151.259302]
];

function initializeMaps() {
    var myOptions = {
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        mapTypeControl: false
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
    var infowindow = new google.maps.InfoWindow(); 
    var marker, i;
    var bounds = new google.maps.LatLngBounds();

    for (i = 0; i < markers.length; i++) { 
        var pos = new google.maps.LatLng(markers[i][1], markers[i][2]);
        bounds.extend(pos);
        marker = new google.maps.Marker({
            position: pos,
            map: map
        });
        google.maps.event.addListener(marker, 'click', (function(marker, i) {
            return function() {
                infowindow.setContent(markers[i][0]);
                infowindow.open(map, marker);
            }
        })(marker, i));
    }
    map.fitBounds(bounds);

}
initializeMaps()

【问题讨论】:

    标签: google-maps google-maps-markers marker


    【解决方案1】:

    在创建标记的循环中,还创建链接并附加一个触发标记单击的单击侦听器:

    (function(marker){
                google.maps.event
                  .addDomListener($('<li/>')
                                  .text(markers[i][0])
                                   .appendTo('#list')[0],
                                  'click',
                                   function(){
                                    google.maps.event.trigger(marker,'click',{});
                                   });
     })(marker);
    

    演示:http://jsfiddle.net/doktormolle/HNd6H/

    【讨论】:

    • 我期待这个,但是我们可以在没有'li'附加的情况下做到这一点[我需要在 html 中保留'li'] - 非常感谢您的帮助
    • 您可以存储一个属性(例如 ID 或索引),使您能够访问标记数组中的正确链接。当索引相等时(当前它们相等),您可以直接在循环内使用ijsfiddle.net/doktormolle/HNd6H/2
    • 是的,谢谢,请编辑你的第一个答案,我放弃了投票
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 2011-04-29
    • 2016-11-12
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多