Отключить двойной левый клик на карте Google - PullRequest
27 голосов
/ 06 июля 2010

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

Ответы [ 5 ]

110 голосов
/ 19 мая 2011

Вы можете отключить двойной щелчок на Картах Google, установив следующее свойство объекта google.maps.MapOptions :

disableDoubleClickZoom: true

Пример кода:

var mapOptions = {
    scrollwheel: false,
    disableDoubleClickZoom: true, // <---
    panControl: false,
    streetViewControl: false,
    center: defaultMapCenter
};
3 голосов
/ 28 апреля 2011

Вы можете воспользоваться, dblclick срабатывает, если это двойной щелчок, и один клик срабатывает в таких случаях только один раз.

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

0 голосов
/ 11 сентября 2015

(Пожалуйста, примите во внимание, что это не ответ, это то же решение, на которое уже отвечал Равиндранат Акила, для использования в более широком диапазоне решений [например, мобильных платформ], сконцентрированных на одном методе многократного использования без глобальных переменных)

У нас похожие проблемы с приложением Win 8.1 Mobile.Благодаря Равиндранату Акиле мы доработали решение, которое определено одним методом, а также проверили масштабирование и перемещение по центру карты.В любом случае иногда случалось так, что адрес, который мы получаем при нажатии карты, неправильный - улучшения приветствуются.

    // 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 голосов
/ 16 января 2013

Вам нужен внешний 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

  }
0 голосов
/ 20 июля 2010

Это невозможно сделать, вам, по сути, придется заблокировать или предотвратить событие.

Вы можете попробовать что-то вроде createInterceptor () как в EXT JS. Это сработает до того, как событие сработает, и вы можете вернуть false, чтобы предотвратить фактическое событие, но я не уверен, что это предотвратит выполнение кода до того, как событие сработает в этом коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...