Могу ли я узнать, как отключить двойной клик по карте google, чтобы информационное окно не закрывалось, когда я дважды нажимаю на карту google? Это можно сделать с помощью карты google?
Отключить двойной щелчок левой кнопкой мыши на карте google
Ответ 1
Вы можете отключить двойное нажатие мыши на Картах Google, установив следующее свойство google.maps.MapOptions:
disableDoubleClickZoom: true
Пример кода:
var mapOptions = {
scrollwheel: false,
disableDoubleClickZoom: true, // <---
panControl: false,
streetViewControl: false,
center: defaultMapCenter
};
Ответ 2
Вы можете воспользоваться преимуществами dblclick fire, если это двойной щелчок, и один клик в таких случаях срабатывает только один раз.
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();
});
Ответ 3
Для этого нужен внешний var:
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
}
Ответ 4
(Пожалуйста, учтите, что это не ответ, это уже такое же решение, как Ravindranath Akila, для использования в более широких диапазонах решений [например, мобильные платформы], сконцентрированных на одном многоразовом методе без глобальных переменных)
У нас есть аналогичные проблемы с помощью приложения Win 8.1 Mobile. Благодаря Ravindranath Akila мы доработали решение, которое определено одним способом, а также масштабирование и перемещение с центром карты. В любом случае иногда случалось, что адрес, который мы получаем от клика по карте, неверен - улучшения приветствуются.
// 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;
});
}
Ответ 5
Это невозможно сделать, вам по существу придется заблокировать или предотвратить событие.
Вы можете попробовать что-то вроде createInterceptor(), как в EXT JS. Это будет срабатывать до того, как событие будет запущено, и вы можете вернуть значение false, чтобы предотвратить запуск текущего события, но я не уверен, что это предотвратит выполнение кода до того, как событие будет запущено внутри этого кода.