在谷歌地图上自动打开标记信息窗格

时间:2011-11-12 18:10:03

标签: javascript google-maps

我已经创建了一个包含我想要的大部分内容的自定义地图(自定义图标和自定义信息气泡),但我无法找到自动打开标记信息窗口的解决方案,我做了很多搜索但似乎找不到任何我到目前为止的代码如下,任何帮助将不胜感激:

    function initialize() {

      var myLatlng = new google.maps.LatLng(54.325109,-2.742226);

      var myOptions = {
        zoom: 15,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      }

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

      var countries = [
        {
          title:'Remedy', 
          lat:54.3210, 
          lon:-2.7438,
          content:"<h2>Remedy</h2><p>address, <br />location, <br />postcode</p> <p><b>T:</b> 07595 153 835 <br /><b>E:</b> <a href='mailto:email'>email</a></p>"
        }
      ];

      for (var i = 0; i < countries.length; i++) { 
          var c = countries[i]; 
          c.marker = new google.maps.Marker({
              position: new google.maps.LatLng(c.lat, c.lon), 
              map: map,
              icon: '/wp-content/themes/remedy/display_images/google_map_icon.png',
              title: c.title});
          c.infowindow = new google.maps.InfoWindow({content: c.content}); 
          google.maps.event.addListener(c.marker, 'click', makeCallback(c)); 
      } 

      function makeCallback(country) { 
          return function () { 
              country.infowindow.open(map, country.marker); 
          }; 
      }

      infowindow.open(map, marker);

    }

3 个答案:

答案 0 :(得分:2)

也许它不起作用,因为你刚刚创建了Map的实例,并没有等待地图的完全加载来打开InfoWindow。

尝试这样的事情:

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


据参考: http://code.google.com/intl/en/apis/maps/documentation/javascript/reference.html#Map

tilesloaded - 当可见图块完成加载时会触发此事件。

答案 1 :(得分:0)

嗯, inforwindow 没有引用代码中的任何内容,这就是它无法正常工作的原因。

由于您目前在列表中有一个国家/地区,因此您可以使用实际信息窗口快速测试 infowindow 变量,或者更好,因为列表中有1个项目,只需将c定义为在循环之外,这样你就可以访问它,然后打开弹出窗口,传递地图和标记,就像这样(假设c已在循环外定义)

c.infowindow.open(map, c.marker);

答案 2 :(得分:0)

var infowindow = new google.maps.InfoWindow({
    content: "Test Route",
    position: new google.maps.LatLng(38.8709866, -77.208055),
});
infowindow.open(map);