谷歌地图:想要将draggable设置为true后直接拖动地图

时间:2015-02-23 11:59:44

标签: javascript google-maps

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

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

然后,我添加了一个计时器/功能,如果用户想要它,可以在mousedown一秒后进行拖动(类似于长按):

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来模拟另一个mousedown,但它不起作用:

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

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

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

那么任何想法都有吗?谢谢。

1 个答案:

答案 0 :(得分:0)

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