Подтвердить что ты не робот

Отключить двойной щелчок левой кнопкой мыши на карте google

Могу ли я узнать, как отключить двойной клик по карте google, чтобы информационное окно не закрывалось, когда я дважды нажимаю на карту google? Это можно сделать с помощью карты google?

4b9b3361

Ответ 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();
});

См. http://www.ilikeplaces.com

Ответ 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, чтобы предотвратить запуск текущего события, но я не уверен, что это предотвратит выполнение кода до того, как событие будет запущено внутри этого кода.