Kann ich wissen, wie kann ich Doppelklick auf Google Map deaktivieren, so dass das Info-Fenster nicht geschlossen wird, wenn ich auf Google-Karte doppelklicke? Kann es durch Google Map API getan werden?Disable doppelten linken Klick auf Google Karte
Antwort
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
};
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.
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();
});
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
}
(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;
});
}
Mehrere meiner Fragen in einem hier beantwortet - liebe das :) –