拖拽后获得中心坐标潘完了

时间:2014-08-28 02:21:20

标签: google-maps-api-3

我想跟踪地图中心的坐标。到目前为止,我一直在使用它:

// On Drag End
google.maps.event.addListener(map, 'dragend', function() { 
    $('.map_center_coords .latitude').html( map.getCenter().lat() );
    $('.map_center_coords .longitude').html( map.getCenter().lng() );
});

通过在拖动事件结束时获取坐标来起作用。

问题是我现在正在使用map.panTo移动到某个位置。

是否有基本"whenever the center has *finished* moving in any way"的事件?

正如geocodezip所提到的,我忘记了center_changed事件。但是在拖动/平移地图时会不断触发该事件。

理想情况下,我在寻找任何拖动/平移完成后只触发一次的事件。

3 个答案:

答案 0 :(得分:8)

改为观察idle事件(在平移或缩放后地图变为空闲时触发此事件):

    google.maps.event.addListener(map,'idle',function(){
      if(!this.get('dragging') && this.get('oldCenter') && this.get('oldCenter')!==this.getCenter()) {
        //do what you want to
      }
      if(!this.get('dragging')){
       this.set('oldCenter',this.getCenter())
      }

    });

    google.maps.event.addListener(map,'dragstart',function(){
      this.set('dragging',true);          
    });

    google.maps.event.addListener(map,'dragend',function(){
      this.set('dragging',false);
      google.maps.event.trigger(this,'idle',{});
    });

答案 1 :(得分:4)

google.maps.Map center_changed事件。

center_changed | None | This event is fired when the map center property changes.
// On center changed
google.maps.event.addListener(map, 'center_changed', function() { 
  $('.map_center_coords .latitude').html( map.getCenter().lat() );
  $('.map_center_coords .longitude').html( map.getCenter().lng() );
});

答案 2 :(得分:3)

尝试使用idle事件。链接到docs

  

在平移或平移后地图变为空闲时会触发此事件   变焦。

如果您希望空闲事件仅在dragend之后触发,请尝试下面的代码段。

此代码在dragendidle事件触发后将坐标打印到控制台。

mapObj.addListener('dragend', function () {
    var idleListener = mapObj.addListener('idle', function () {
        google.maps.event.removeListener(idleListener);
        console.log(mapObj.getCenter().lat()); 
        console.log(mapObj.getCenter().lng());
    });
});