谷歌地图:OverlappingMarkerSpiderfier

时间:2014-06-19 23:16:55

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

所以我是谷歌地图的初学者,我一直在看OverlappingMarkerSpiderfier Github指令,但经过几个小时的摆弄,我无法获得任何工作!我的代码很简单,因为我正处于学习的过程中。这是代码:

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Simple markers</title>
    <style>
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
      </style>
      <script src="http://jawj.github.io/OverlappingMarkerSpiderfier/bin/oms.min.js"></script> //added the file
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
    <script> 

    function initialize() {
      var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
      var mapOptions = {
        zoom: 4,
        center: myLatlng
      }
      var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
      var oms = new OverlappingMarkerSpiderfier(map); //Spiderfied it here
      var iw = new gm.InfoWindow();
      oms.addListener('click', function(marker, event) {
        iw.setContent(marker.desc);
        iw.open(map, marker);
      });
      oms.addListener('spiderfy', function(markers) {
        iw.close();
      });

      var locations = ["Sydney, Australia", "Sydney, Australia", "Sydney, Australia", "Sydney, Australia"]

      for (var i = 0; i < locations.length; i ++) {
        var title_i = "title " + i;
        var desc_i = "description " + i;
        var loc = new gm.LatLng(-35.3080, 149.1245);
        var marker = new gm.Marker({
          position: loc,
          title: title_i,
          map: map
        });
        marker.desc = desc_i;
        oms.addMarker(marker);  // <-- here attempted to add markers
      } 
    }

    google.maps.event.addDomListener(window, 'load', initialize);

    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
  </body>
</html>

它与Github上的代码非常相似,但不幸的是,我仍然无法让它发挥作用。我开始捣乱地理编码并将其与可自定义的标记(如不同的颜色标记)集成,但我无法让Open Spiderfier运行。

1 个答案:

答案 0 :(得分:2)

有两个问题:

  1. 您必须首先加载maps-API,然后加载oms.min.js
  2. 您已经省略了这一部分:var gm=google.maps;。把它放到initialize()
  3. 的开头