【问题标题】:Google maps open info window by default?谷歌地图默认打开信息窗口?
【发布时间】:2012-01-04 13:53:25
【问题描述】:

以下示例在 Google 地图上显示了该位置的简单标记(标准图标),当单击该图标时,它会打开信息窗口。我可以显示默认打开的信息窗口,这样我就不需要点击图标来打开了吗?

var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
    var myOptions = {
    zoom: 4,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
    }

    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    var contentString = '<div id="content">'+
        '<div id="siteNotice">'+
        '</div>'+
        '<h2 id="firstHeading" class="firstHeading">Uluru</h2>'+
        '</div>';

    var infowindow = new google.maps.InfoWindow({
        content: contentString
    });

    var marker = new google.maps.Marker({
        position: myLatlng,
        map: map,
        title:"Uluru (Ayers Rock)"
    });

    google.maps.event.addListener(marker, 'click', function() {
    infowindow.open(map,marker);
    });

【问题讨论】:

    标签: google-maps google-maps-markers


    【解决方案1】:

    如果你想显示默认打开的信息窗口而不点击,只需添加一个新代码,如下所示:

    您的代码:

    google.maps.event.addListener(marker, 'click', function() {
            infowindow.open(map,marker);
    });
    

    所以我们有一个像这样的新代码:

    google.maps.event.addListener(marker, 'click', function() {
       infowindow.open(map,marker);
    });
    
    infowindow.open(map,marker);
    

    如你所见,我们只是添加了一个带有infowindow.open(map,marker);的小行代码

    【讨论】:

    • 这是有效的,但当我使用infowindow.setContent() 设置数据时,数据未显示在信息窗口中。然后从外部范围调用setContent,就像你调用infowindow.open 一样,但这对我也不起作用
    【解决方案2】:

    上面的代码完美运行。但是,我的地图并没有移动,因此信息窗口被完全显示。相反,图钉留在了中间。

    那么如何让地图自行调整以使信息窗口完全可见? 读这个: Google Maps : auto center map on marker click

    如果您希望图钉保持原位而不移动地图,请阅读以下内容: Google Maps: How to prevent InfoWindow from shifting the map

    希望能帮助人们迈出下一步

    【讨论】:

    • 这真是太棒了!非常感谢您发布第二个链接!
    【解决方案3】:

    您可以在页面加载时直接运行“打开”,应该会自动打开窗口,无需点击。

    infowindow.open(map, marker);
    

    但是,在某些情况下,这可能无法正确自动平移地图,从而使叠加层的顶部离开地图的边缘。

    对我有用的一种方法是将其包装在地图上“tilesloaded”事件的侦听器中

    google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
      infowindow.open(map, marker);
    });
    

    【讨论】:

    • 这是正确的解决方案,谢谢!我一直在寻找几个小时,但所有其他解决方案都以标记为中心,而不是 infoWindow。
    【解决方案4】:

    下面的代码对我来说很好用:

    更改纬度、经度、内容和 mapid(使用您的自定义 div id):

    <script type="text/javascript">
    
    function initialize() {
        var myLatlng = new google.maps.LatLng(48.206615,13.487928);
        var mapOptions = {
            zoom: 16,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
    
        var contentString = '<p><strong>Bahnhofstraße 32</strong></p><p>Bahnhofstraße 32, 4910 Ried im</p><p>Innkreis, Austria</p>';
    
        var infowindow = new google.maps.InfoWindow({
          content: contentString
      });
    
    
        var marker = new google.maps.Marker({
            position: myLatlng,
            map: map,
            title: 'Bahnhofstraße 32'
        });
    
        google.maps.event.addListener(marker, 'click', function() {
        infowindow.open(map,marker);
      });
      // show map, open infoBox 
            google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
              infowindow.open(map, marker);
            });
    
    }
    
    google.maps.event.addDomListener(window, 'load', initialize);
    
        </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-04
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 2016-10-13
      • 1970-01-01
      相关资源
      最近更新 更多