Google Maps API - дважды щелкните точку на карте, чтобы переместить туда маркер

Есть ли встроенная опция в Google Maps API или простой способ реализовать эту функцию. Я хочу дважды щелкнуть точку на карте, и карты Google переместят мой маркер в это место.


person Kirk Ross    schedule 06.11.2014    source источник


Ответы (2)


(Изменить: посмотрите сообщение Винкса. Он указывает, что в картах Google есть опция disableDoubleClickZoom.)

Конечно

<!DOCTYPE html>
<html>
  <head>
    <title>Double click on the map</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
      html, body, #map-canvas {
        height: 500px;
        margin: 0px;
        padding: 0px
      }

    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places"></script>
    <script>
    function initialize() {
      var my_position = new google.maps.LatLng(50.5, 4.5);
      var map = new google.maps.Map(document.getElementById('map-canvas'), {
        center: my_position,
        zoom: 15
      });
      var marker = new google.maps.Marker({
        position: my_position,
        map: map
      });
      // double click event
      google.maps.event.addListener(map, 'dblclick', function(e) {
        var positionDoubleclick = e.latLng;
        marker.setPosition(positionDoubleclick);
        // if you don't do this, the map will zoom in
        e.stopPropagation();
      });
    }
    google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
    <p>Double click on the map</p>
  </body>
</html>
person Emmanuel Delay    schedule 07.11.2014
comment
Это сработало. Но в консоли (firefox) TypeError: e.stopPropagation is not a function. В чем проблема? - person Iftakharul Alam; 17.11.2015

Я не могу прокомментировать ответ Эммануэля Делэя, но чтобы исправить проблему stopPropagation, вы должны использовать параметр disableDoubleClick API Карт.

Вот обновленный результат:

<!DOCTYPE html>
<html>
  <head>
    <title>Double click on the map</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
      html, body, #map-canvas {
        height: 500px;
        margin: 0px;
        padding: 0px
      }

    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places"></script>
    <script>
    function initialize() {
      var my_position = new google.maps.LatLng(50.5, 4.5);
      var map = new google.maps.Map(document.getElementById('map-canvas'), {
        center: my_position,
        disableDoubleClickZoom: true,
        zoom: 15
      });
      var marker = new google.maps.Marker({
        position: my_position,
        map: map
      });
      // double click event
      google.maps.event.addListener(map, 'dblclick', function(e) {
        var positionDoubleclick = e.latLng;
        marker.setPosition(positionDoubleclick);
        // if you don't do this, the map will zoom in
      });
    }
    google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
person Vinks    schedule 05.02.2016
comment
О да, это намного лучше. Спасибо; Я запомню это - person Emmanuel Delay; 05.02.2016
comment
Нет проблем, я просто столкнулся с проблемой, используя ваш ответ. На всякий случай, знаете ли вы аналог dblclick на долгое касание. Это было бы полезно для мобильных устройств, потому что двойное нажатие не так просто. - person Vinks; 05.02.2016