2015-10-05 79 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/