2010-07-06 38 views

回答

102

您可以禁用谷歌地圖通過設置以下google.maps.MapOptions object property雙擊縮放:

disableDoubleClickZoom: true 

示例代碼:

var mapOptions = { 
    scrollwheel: false, 
    disableDoubleClickZoom: true, // <--- 
    panControl: false, 
    streetViewControl: false, 
    center: defaultMapCenter 
}; 
+1

我的幾個問題在這裏回答 - 愛那:) – 2018-03-09 22:18:51

-10

它不能完成,你基本上必須阻止或防止事件發生。

你可以像EXT JS一樣嘗試類似createInterceptor()的東西。這會在事件觸發前觸發,並且您可以返回false以防止實際事件觸發,但我不確定它會在代碼中觸發事件之前阻止代碼執行。

3

如果是雙擊,則可以利用dblclick進行觸發,並且只需單擊一次即可在這種情況下觸發一次。

runIfNotDblClick = function(fun){ 
    if(singleClick){ 
     whateverurfunctionis(); 
    } 
}; 

clearSingleClick = function(fun){ 
    singleClick = false; 
}; 

singleClick = false; 

google.maps.event.addListener(map, 'click', function(event) {// duh! :-(google map zoom on double click! 
    singleClick = true; 
    setTimeout("runIfNotDblClick()", 500); 
}); 

google.maps.event.addListener(map, 'dblclick', function(event) {// duh! :-(google map zoom on double click! 
    clearSingleClick(); 
}); 

http://www.ilikeplaces.com

0

您需要一個外部var要這麼做:

var isDblClick; 
    google.maps.event.addListener(map, 'dblclick', function (event) { 
     isDblClick = true; 
     myDlbClickBelovedFunction(); 
    }); 

    google.maps.event.addListener(map, 'click', function (event) { 
     setTimeout("mySingleClickBelovedFunction();;", 200); 
    }); 

function mySingleClickBelovedFunction() { 
     if (!isDblClick) { 
// DO MY SINGLE CLICK BUSINESS :)    
      } 
// DO NOTHING 

    } 
0

(請認爲這不是答案,只有像Ravindranath Akila一樣的解決方案已經回答了,因爲在更廣泛的解決方案中使用[例如。移動平臺]集中在一個沒有全局變量的可重用方法)

我們有類似的麻煩Win 8.1的移動應用程序。感謝Ravindranath Akila,我們最終確定了在一種方法中定義的解決方案,並檢查縮放並隨地圖中心移動。無論如何,有時候發生的是我們從地圖點擊中獲得的地址是錯誤的 - 歡迎進行改進。

// code 
    { 
     // adding event method 
     addGoogleClickEnventHandler(map, function(e) { 
      // example code inside click event 
      var clickLocation = e.latLng; 
      getAddress(clickLocation); 
     }); 
    } 

    // function 
    function addGoogleClickEnventHandler(googleEventableObject, handlingFunction) { 

    var boundsChanged = false; 
    var centerChanged = false; 
    var singleClick = false; 

    function runIfNotDblClick(obj) { 
     if(singleClick && !boundsChanged && !centerChanged){ 
      handlingFunction(obj); 
     } 
    }; 

    googleEventableObject.addListener('bounds_changed', function() { boundsChanged = true; }); 
    googleEventableObject.addListener('center_changed', function() { centerChanged = true; }); 
    googleEventableObject.addListener('dblclick', function() { singleClick = false; }); 

    googleEventableObject.addListener('click', function(obj) { 
     singleClick = true; 
     setTimeout(function() { 
       runIfNotDblClick(obj); 
      }, 200);    
     boundsChanged = false; 
     centerChanged = false; 
    }); 
    }