【问题标题】:Google Maps: Want to drag the map directly after setting draggable to true谷歌地图:设置draggable为true后想直接拖动地图
【发布时间】:2015-02-23 11:59:44
【问题描述】:

为避免在小型浏览器窗口中出现不必要的滚动,我将 Google 地图的 draggable 选项设置为 false:

if (document.getElementById('map').offsetWidth < 350 )
   map.setOptions({
      draggable: false,
      scrollwheel: false
   });

然后,我添加了一个计时器/功能,如果用户需要,它可以在鼠标按下一秒后进行拖动(有点长按):

var timer = null;

function draggable_true() {
   map.setOptions({
      draggable: true,
      scrollwheel: true
   });
}

var mdown = google.maps.event.addDomListener(map, 'mousedown', function() {        
   timer = setTimeout( draggable_true, 1000 );
});

var mup = google.maps.event.addDomListener(map, 'mouseup', function() {
   clearTimeout( timer );
}); 

这很好用,一秒钟后光标变为手形符号。但是要拖动地图,我必须松开鼠标按钮并再次按下它。所以现在我想知道如何直接拖动地图(鼠标按钮已经并且仍然向下)。

我在 draggable_true() 函数中尝试了 MouseEvent 来模拟另一个鼠标按下,但它不起作用:

var event = new MouseEvent('mousedown', {
   'view': window,
   'bubbles': true,
   'cancelable': true
});              

document.getElementById('map').dispatchEvent(event);

我也试过 mouseup 然后 mousedown,但也没有结果(甚至没有错误或警告)。

那么有人有什么想法吗?谢谢。

【问题讨论】:

    标签: javascript google-maps


    【解决方案1】:

    我使用 jQuery-Mobile 的 taphold event 解决了类似的问题,因为此事件允许您检测长按,然后将 mousemove 事件绑定到您的拖动功能。当用户释放鼠标时,您解除 mousemove 事件的绑定,一切恢复正常。请注意,我没有在 GoogleMaps 中使用这种技术,但它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2012-10-14
      • 2012-01-27
      • 1970-01-01
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 2016-04-10
      • 1970-01-01
      相关资源
      最近更新 更多