2015-10-05 85 views
-1

Javascript地图API是否支持拖动的阈值?
假设我想拖动结束事件,只有当拖动区域大于当前可见区域的10%时才会触发结束事件。谷歌地图拖动门限

回答

1

注册dragstart事件和记录latLng的左上角和右下角map角落。使用它们计算可见高度和宽度的100%,然后使用该值获得可见高度和宽度的10%。

注册dragend并记录新的latLng左上角和右下角map角落。从旧的中抽取新的latlng,看看你移动了多少。

比较此举〜10%的值:

var latUp; 
var lngUp; 
var latDown; 
var lngDown; 

google.maps.event.addListener(map, "dragstart", function() { 
    latUp = map.getBounds().getNorthEast().lat(); 
    lngUp = map.getBounds().getNorthEast().lng(); 
    latDown = map.getBounds().getSouthWest().lat(); 
    lngDown = map.getBounds().getSouthWest().lng(); 
}); 

google.maps.event.addListener(map, "dragend", function() { 
    var latUpNew = map.getBounds().getNorthEast().lat(); 
    var lngUpNew = map.getBounds().getNorthEast().lng(); 
    var latDownNew = map.getBounds().getSouthWest().lat(); 
    var lngDownNew = map.getBounds().getSouthWest().lng(); 

    var tenPercentLat = Math.abs(latUp - latDown)/10; 
    var tenPercentLng = Math.abs(lngUp - lngDown)/10; 
    var moveLat = Math.abs(latUp - latUpNew); 
    var moveLng = Math.abs(lngUp - lngUpNew); 

    if (tenPercentLat < moveLat || tenPercentLng < moveLng){ 
     console.log('greather than 10 percent move!'); 
    } 
    else{ 
     console.log('less than 10 percent move!'); 
    } 
}); 

演示:http://jsfiddle.net/4mtyu/688/