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