代码之家  ›  专栏  ›  技术社区  ›  shipshape

googlemapsapiv3:setMap()事件是否有回调或事件侦听器?

  •  13
  • shipshape  · 技术社区  · 14 年前

    marker.setMap() .

    我的问题是,地图有时需要很长时间来显示新的标记,特别是在IE中。我想在地图切换标记时显示“加载”动画。但是我不知道如何检测地图何时显示完新数据(没有页面加载,因为这都是AJAX)。是否有一个回调或事件侦听器 setMap() 事件,以便在最后一个标记完成加载后调用函数停止“加载”动画?

    2 回复  |  直到 5 年前
        1
  •  23
  •   shipshape    14 年前

    setMap()似乎没有回调或事件侦听器,但我找到了一种方法来实现我想要的。我正在使用jQuery加载Google地图。这是我的密码。

    初始化映射时,我为“idle”事件设置了一个侦听器,它隐藏了“loading”动画。每当地图在滚动或缩放更改后完成重绘时,就会触发“空闲”事件:

    google.maps.event.addListener(this.map, 'idle', function() {
     $('#loading').hide();
    });
    

    // clear overlays from the map
    function clearOverlays() {
     $('#loading').show();
    
     // clear the markers from the active data array
     if (activeData) {
      for (i in activeData) { activeData[i].setMap(null); }
     }
     activeData = '';
    
     // very slightly recenter the map to trigger the 'idle' event
     var centerlat = MYMAP.map.getCenter().lat();
     var centerlng = MYMAP.map.getCenter().lng() + .000000001;
     recenter = new google.maps.LatLng(centerlat, centerlng);
     MYMAP.map.setCenter(recenter);
    }
    

    这是一个有点黑客,但我希望其他人觉得这是有用的。

    推荐文章