2010-07-06 3 views

risposta

102

È possibile disattivare doppio clic zoom su Google Maps impostando la seguente google.maps.MapOptions object property: Codice

disableDoubleClickZoom: true 

Esempio:

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

Diverse delle mie domande hanno risposto in uno qui: l'amore :) –

-10

Non può essere fatto, si dovrebbe essenzialmente bloccare o impedire che l'evento si verifichi.

Si potrebbe provare qualcosa come createInterceptor() come in EXT JS. Questo si attiva prima che l'evento venga attivato e puoi restituire false per impedire l'attivazione dell'evento effettivo, ma non sono sicuro che impedirà l'esecuzione del codice prima che l'evento venga attivato all'interno di quel codice.

3

È possibile usufruire di, dblclick si attiva se si tratta di un doppio clic e il singolo clic si attiva in tali occizioni solo una volta.

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

Vedi http://www.ilikeplaces.com

0

Avete bisogno di un esterno var per farlo:

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

(Si prega di considerare che questa non è la risposta, è solo la stessa soluzione come Ravindranath Akila ha già risposto, per l'utilizzo in più vaste gamme di soluzioni [ad es. Piattaforme mobili] concentrate su un unico metodo riutilizzabile senza variabili globali)

Abbiamo problemi simili con l'app Win 8.1 Mobile. Grazie a Ravindranath Akila abbiamo finalizzato la soluzione che è definita in un metodo e controllando anche lo zoom e lo spostamento con il centro della mappa. Ad ogni modo è capitato che l'indirizzo che riceviamo da map-click sia sbagliato - i miglioramenti sono ben accetti.

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