web-dev-qa-db-fra.com

Désactiver le double clic gauche sur google map

Puis-je savoir comment désactiver le double-clic sur Google Map afin que la fenêtre d’informations ne se ferme pas lorsque je double-clique sur Google Map? Cela peut-il être fait via google map api?

27
davidlee

Vous pouvez désactiver le double-clic sur Google Maps en définissant la propriété d'objet suivante: google.maps.MapOptions :

disableDoubleClickZoom: true

Exemple de code:

var mapOptions = {
    scrollwheel: false,
    disableDoubleClickZoom: true, // <---
    panControl: false,
    streetViewControl: false,
    center: defaultMapCenter
};
108
Jatin Dhoot

Vous pouvez tirer parti de, dblclick se déclenche s'il s'agit d'un double clic et d'un seul clic ne se déclenche qu'une seule fois.

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

Voir http://www.ilikeplaces.com

3
Ravindranath Akila

(Veuillez considérer que ce n'est pas une réponse, c'est seulement la même solution que Ravindranath Akila a déjà répondu, pour une utilisation dans des gammes plus larges de solutions [par exemple, des plates-formes mobiles] concentrées sur une méthode réutilisable sans variables globales)

Nous avons des problèmes similaires par Win 8.1 Mobile app. Grâce à Ravindranath Akila, nous avons finalisé la solution qui est définie dans une méthode et en vérifiant également le zoom et le déplacement avec le centre de la carte. Quoi qu'il en soit, il est parfois arrivé que l'adresse que nous recevons de Map-Click soit fausse - les améliorations sont les bienvenues.

    // 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;
    });
    }
0
Václav Švára

Vous avez besoin d'une var externe pour le faire:

 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
thennebelle