2010-07-06 4 views

Antwort

102

Sie deaktivieren können doppelklicken Sie auf Zoom auf Google Maps, indem Sie die folgenden google.maps.MapOptions object property:

disableDoubleClickZoom: true 

Beispielcode:

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

Mehrere meiner Fragen in einem hier beantwortet - liebe das :) –

-10

Es ist nicht möglich, Sie müssten das Ereignis im Wesentlichen blockieren oder verhindern.

Sie könnten etwas wie createInterceptor() wie in EXT JS versuchen. Dies würde ausgelöst werden, bevor das Ereignis ausgelöst wird, und Sie können false zurückgeben, um das Auslösen des eigentlichen Ereignisses zu verhindern. Ich bin mir jedoch nicht sicher, ob dies die Ausführung des Codes verhindert, bevor das Ereignis in diesem Code ausgelöst wird.

3

Sie können dblclick verwenden, wenn es sich um einen Doppelklick handelt und ein einzelner Klick nur einmal ausgelöst wird.

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(); 
}); 

Siehe http://www.ilikeplaces.com

0

Sie benötigen einen externen var, um das zu tun:

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

(Bitte beachten Sie, dass dies keine Antwort ist, es ist nur die gleiche Lösung, wie Ravindranath Akila bereits beantwortet hat, für den Einsatz in weiteren Bereichen von Lösungen [z. Mobile Plattformen] konzentrierte sich auf eine wiederverwendbare Methode ohne globale Variablen)

Wir haben ähnliche Probleme durch Win 8.1 Mobile App. Dank Ravindranath Akila haben wir die Lösung abgeschlossen, die in einer Methode definiert ist und auch das Zoomen und Bewegen mit dem Kartenzentrum überprüft. Immerhin ist es manchmal passiert, dass die Adresse, die wir von map-click erhalten, falsch ist - Verbesserungen sind willkommen.

// 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; 
    }); 
    }