为避免在小型浏览器窗口中进行不必要的滚动,我将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,但也没有结果(甚至没有错误或警告)。
那么任何想法都有吗?谢谢。
答案 0 :(得分:0)
我使用jQuery-Mobile的taphold event解决了类似的问题,因为此事件允许您检测longpress,然后将mousemove事件绑定到拖动功能。当用户释放鼠标时,取消绑定mousemove事件,一切恢复正常。请注意,我没有将此技术用于GoogleMaps,但它应该可以使用。