【问题标题】:Integrate Google Maps MarkerClusterer with infowindow将 Google Maps MarkerCluster 与 infowindow 集成
【发布时间】:2017-02-24 02:59:39
【问题描述】:

我试图将 InfoWindow 放在与 MarkerClusterer 分组的多个标记中,但没有成功。我只能使用 infowindows 或集群生成地图;不是同时。在网上搜索让我更加困惑......

起点是google developers page:根据我的需要,我创建了以下代码:

    <div id="map"></div>
    <script>

      function initMap() {

        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 5,
          center: {lat: -15.7942357, lng: -47.8821945}
        });

        // Add some markers to the map.
        // Note: The code uses the JavaScript Array.prototype.map() method to
        // create an array of markers based on a given "locations" array.
        // The map() method here has nothing to do with the Google Maps API.
        var markers = locations.map(function(location, i) {
          return new google.maps.Marker({
            position: location,
          });
        });

        // Add a marker clusterer to manage the markers.
        var markerCluster = new MarkerClusterer(map, markers,
            {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});
      }
      var locations = [
    {lat: -19.9286,     lng: -43.93888},
    {lat: -19.85758,    lng: -43.9668},
    {lat: -18.24587,    lng: -43.59613},
    {lat: -20.46427,    lng: -45.42629},
    {lat: -20.37817,    lng: -43.41641},
    {lat: -20.09749,    lng: -43.48831},
    {lat: -21.13594,    lng: -44.26132},
      ]
    </script>
    <script src="https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/markerclusterer.js">
    </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?callback=initMap">
    </script>

然后我停在这里。 InfoWindow 中显示的代码调用了除“位置”之外的另一个对象。比我尝试的更多,最糟糕的结果是......

我只想为每个标记添加简单的信息:每个标记只有一个标题和一个唯一的网络链接。

有人可以帮忙吗?

【问题讨论】:

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


    【解决方案1】:

    将每个标记的“唯一信息”添加到您的位置数组(如此问题的答案:Google Maps JS API v3 - Simple Multiple Marker Example)。

    为每个打开带有该独特内容的信息窗口的标记添加一个点击侦听器。

    var infoWin = new google.maps.InfoWindow();
    var markers = locations.map(function(location, i) {
      var marker = new google.maps.Marker({
        position: location
      });
      google.maps.event.addListener(marker, 'click', function(evt) {
        infoWin.setContent(location.info);
        infoWin.open(map, marker);
      })
      return marker;
    });
    

    proof of concept fiddle

    代码 sn-p:

    function initMap() {
    
      var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 5,
        center: {
          lat: -15.7942357,
          lng: -47.8821945
        }
      });
      var infoWin = new google.maps.InfoWindow();
      // Add some markers to the map.
      // Note: The code uses the JavaScript Array.prototype.map() method to
      // create an array of markers based on a given "locations" array.
      // The map() method here has nothing to do with the Google Maps API.
      var markers = locations.map(function(location, i) {
        var marker = new google.maps.Marker({
          position: location
        });
        google.maps.event.addListener(marker, 'click', function(evt) {
          infoWin.setContent(location.info);
          infoWin.open(map, marker);
        })
        return marker;
      });
    
      // Add a marker clusterer to manage the markers.
      var markerCluster = new MarkerClusterer(map, markers, {
        imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'
      });
    
    }
    var locations = [{
      lat: -19.9286,
      lng: -43.93888,
      info: "marker 1"
    }, {
      lat: -19.85758,
      lng: -43.9668,
      info: "marker 2"
    }, {
      lat: -18.24587,
      lng: -43.59613,
      info: "marker 3"
    }, {
      lat: -20.46427,
      lng: -45.42629,
      info: "marker 4"
    }, {
      lat: -20.37817,
      lng: -43.41641,
      info: "marker 5"
    }, {
      lat: -20.09749,
      lng: -43.48831,
      info: "marker 6"
    }, {
      lat: -21.13594,
      lng: -44.26132,
      info: "marker 7"
    }, ];
    
    google.maps.event.addDomListener(window, "load", initMap);
    html,
    body,
    #map {
      height: 100%;
      width: 100%;
      margin: 0px;
      padding: 0px
    }
    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
    <script src="https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/markerclusterer.js"></script>
    <div id="map"></div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-10
      • 2014-06-08
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多