【问题标题】:Trigger Google map info window with URL hash使用 URL 哈希触发 Google 地图信息窗口
【发布时间】:2016-05-13 13:51:36
【问题描述】:

我目前有一个带有多个标记的谷歌地图,我正在尝试使用 URL 来触发所需的标记以显示它的信息窗口。

例如,如果 URL 是 '/index.html#1',第一个标记将打开其信息窗口,如果 '/index.html#2' 第二个标记将打开它的信息窗口标记将打开其信息窗口。

有人建议我使用 google.maps.event.trigger(markers[urlhash], 'click'); 但这似乎不会触发信息窗口?

我们将不胜感激任何和所有建议,谢谢。

获取网址(/index.html#1):

var urlhash = window.location.hash.replace('#','');

谷歌地图:

/* Google Map */
function googleMap(){
  var locations = [
    ['Bondi Beach', -33.890542, 151.274856, 4],
    ['Coogee Beach', -33.923036, 151.259052, 5],
    ['Cronulla Beach', -34.028249, 151.157507, 3],
    ['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
    ['Maroubra Beach', -33.950198, 151.259302, 1]
  ];
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 10,
    center: new google.maps.LatLng(-33.92, 151.25),
    mapTypeId: google.maps.MapTypeId.ROADMAP
  });
  var infowindow = new google.maps.InfoWindow();
  var marker, i;
  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
    });
    google.maps.event.addListener(marker, 'click', (function(marker, i) {
      return function() {
        map.panTo(marker.getPosition());
        infowindow.setContent(locations[i][0]);
        infowindow.open(map, marker);
      };
    })(marker, i));
  }

  if(urlhash){
    google.maps.event.trigger(markers[urlhash], 'click');
  }

}

【问题讨论】:

    标签: javascript google-maps google-maps-api-3


    【解决方案1】:
    /* Google Map */
    function googleMap(){
      var locations = [
        ['Bondi Beach', -33.890542, 151.274856, 4],
        ['Coogee Beach', -33.923036, 151.259052, 5],
        ['Cronulla Beach', -34.028249, 151.157507, 3],
        ['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
        ['Maroubra Beach', -33.950198, 151.259302, 1]
      ];
      var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 10,
        center: new google.maps.LatLng(-33.92, 151.25),
        mapTypeId: google.maps.MapTypeId.ROADMAP
      });
      var infowindow = new google.maps.InfoWindow();
      var marker, i;
      var markers = [];
      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
        });
        markers.push(marker);
        google.maps.event.addListener(marker, 'click', (function(marker, i) {
          return function() {
            map.panTo(marker.getPosition());
            infowindow.setContent(locations[i][0]);
            infowindow.open(map, marker);
          };
        })(marker, i));
      }
    
      if(urlhash){
        google.maps.event.trigger(markers[urlhash], 'click');
      }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      相关资源
      最近更新 更多