0

经过长时间的研发,我能够画一个圆并根据位置和半径在圆的那个区域内放置标记。

我正在调用一个函数,该函数在圆的半径或位置发生变化时触发。它工作正常(函数触发并从数据库中获取标记。)但是在拖动圆时调用该函数(一些100 次)。我希望该函数调用 OnDragComplete .. 我没有找到任何此类事件 Google API .. 下面是我的代码.. 任何帮助将不胜感激。

google.maps.event.addListener(distanceWidget, 'distance_changed', function() {
 displayInfo(distanceWidget);
  searchLocations();
  });

google.maps.event.addListener(distanceWidget, 'position_changed', function() {
 displayInfo(distanceWidget);
 searchLocations();
            });

4

2 回答 2

1

您可以在鼠标事件上向小部件添加“拖动”属性并在其他功能中检查它:

google.maps.event.addListener(distanceWidget, 'mousedown', function() {
    distanceWidget.dragging = true;
});

google.maps.event.addListener(distanceWidget, 'mouseup', function() {
    distanceWidget.dragging = false;
});

google.maps.event.addListener(distanceWidget, 'position_changed', function() {
    if (distanceWidget.dragging === false) {
        displayInfo(distanceWidget);
        searchLocations();
    }
});
于 2013-07-14T18:49:18.747 回答
0

我也遇到过这个问题。我们可以在 DistanceWidget 函数中使用 drag 和 dragend 事件监听器,并使用标记实例来监听

function DistanceWidget(map) {
  this.set('map', map);
  this.set('position', map.getCenter());

  var marker = new google.maps.Marker({
    lat: $('input[name=lat]').val(),
    lng: $('input[name=lng]').val(),
    draggable: true,
    crossOnDrag: false,
    cursor: 'crosshair',
    title: 'Drag to change circle radius!',
    icon: 'assets/front/images/pin.png',
  });

  
  google.maps.event.addListener(marker, 'drag', function(e) {
    console.log('starting');
  });
  
  google.maps.event.addListener(marker, 'dragend', function(e) {
    // Trigger once u drop the widget marker
    
    console.log('end');
  });

}

于 2015-01-16T10:33:44.157 回答