有没有办法在谷歌地图V3上禁用拖曳惯性?看起来它应该是一个MapOption,但我找不到任何方法来做到这一点。
答案 0 :(得分:5)
使用未记录的选项{{1}} ,例如:
{{1}}
答案 1 :(得分:4)
今天我遇到了同样的问题,在地图上方浮动的一些自定义Div需要重新定位在Map Movement上。我的重新定位工作正常,只要用户在拖动鼠标之后完全停止(因此没有动量),但如果只是快速拖动并释放div,则最终会稍微关闭。
为了解决这个问题,我迷上了拖拽事件和空闲事件:
var map = /* All the map config */
var stickyCenter = map.getCenter();
/* ... Code ... */
google.maps.event.addListener(map, 'drag', function(){ stickyCenter = map.getCenter(); });
google.maps.event.addListener(map, 'idle', function() { map.setCenter(stickyCenter); });
发生的事情是,在你拖动并且地图停止后(动量完成后)地图“快照”回到原位。
如果捕捉太突然,可能会以某种方式对动作进行平移或动画制作。希望有所帮助,它并不完美,但它是一种扭转阻力事件动力的方法。
答案 2 :(得分:2)
目前无法使用Maps API V3。考虑在此处提交功能请求:
答案 3 :(得分:0)
我很确定至少可以反击这种势头。如果我错了,请有人纠正我!例如,为了简单起见,假设您的地图容器的width
100vw
和height
100vh
。您只需在getCenter()
事件调用的函数中调用mouseup
,然后立即使用这些坐标setCenter()
?
function initMap(){
...
var win = window;
google.maps.event.addDomListener(win, 'mouseup', setCoords);
function setCoords(){
var x = myMap.getCenter();
var lat = x.lat();
var lng = x.lng();
myMap.addListener('center_changed', function(lat, lng){
myMap.setCenter(new google.maps.LatLng(lat, lng));
};
};
上面的代码实际上有效,但是它的唯一作用是它只能运行一次,直到浏览器看起来过载并产生错误未捕获RangeError:超出最大调用堆栈大小。
不知道现在该做什么。
有关此 here 的更多信息。