Все готово!

Прежде чем приступить к разработке, ознакомьтесь с документацией для разработчиков.

Активация Google Maps JavaScript API

Чтобы помочь вам освоиться, мы покажем, как выполнить некоторые необходимые действия в консоли разработчика Google:

  1. Создание или выбор проекта
  2. Активация Google Maps JavaScript API и связанных служб
  3. Создание соответствующих ключей

Прокручивание и панорамирование

С помощью свойства gestureHandling в объекте MapOptions можно контролировать сдвиг и прокручивание карты при её просмотре на мобильном устройстве.

Пример

Следующий пример использует режим обработки жестов cooperative. Просмотрите демонстрационный пример на мобильном устройстве, чтобы увидеть, как работает код.

/**
 * This sample sets the gesture handling mode to 'cooperative',
 * which means that on a mobile device, the user must swipe with one
 * finger to scroll the page and two fingers to pan the map.
 */
function initMap() {
  var myLatLng = {lat: -25.363, lng: 131.044};

  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 4,
    center: myLatLng,
    gestureHandling: 'cooperative'
  });

  var marker = new google.maps.Marker({
    position: myLatLng,
    map: map,
    title: 'Hello World!'
  });
}
<div id="map"></div>
/* Always set the map height explicitly to define the size of the div
 * element that contains the map. */
#map {
  height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html, body {
  height: 100%;
  margin: 0;
  padding: 0;
}
 <!-- Replace the value of the key parameter with your own API key. -->
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap">
</script>
<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Cooperative Gesture Handling</title>
    <style>
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }
      /* Optional: Makes the sample page fill the window. */
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
  </head>

  <body>
    <div id="map"></div>
    <script>

      /**
       * This sample sets the gesture handling mode to 'cooperative',
       * which means that on a mobile device, the user must swipe with one
       * finger to scroll the page and two fingers to pan the map.
       */
      function initMap() {
        var myLatLng = {lat: -25.363, lng: 131.044};

        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 4,
          center: myLatLng,
          gestureHandling: 'cooperative'
        });

        var marker = new google.maps.Marker({
          position: myLatLng,
          map: map,
          title: 'Hello World!'
        });
      }
    </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
    </script>
  </body>
</html>

Обработка жестов

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

Google Maps JavaScript API предусматривает свойство gestureHandling в объекте MapOptions, которое можно использовать для того, чтобы сделать взаимодействие пользователей с картой удобнее. Возможные значения:

  • greedy: Карта всегда сдвигается (вверх или вниз, влево или вправо), когда пользователь листает (перетаскивает) экран. Другими словами, оба варианта пролистывания – как одним пальцем, так и двумя – заставляют карту сдвигаться.
  • cooperative: Пользователь должен листать одним пальцем, чтобы прокручивать страницу, и двумя пальцами – чтобы двигать карту. Когда пользователь листает карту одним пальцем, на карте появляется наложение с подсказкой, сообщающей пользователю, что для смещения карты нужно листать двумя пальцами. См. пример выше на мобильном устройстве, чтобы увидеть, как работает режим cooperative.
  • none: Карта не сдвигается и не масштабируется.
  • auto (по умолчанию): Поведение совпадает с режимом cooperative либо greedy, в зависимости от того, прокручивается ли страница или нет. Более подробно – если свойство установлено как auto, API выбирает следующий режим:
    • cooperative – если тело страницы больше окна или если API не может определить размер страницы (например, если страница находится во встроенном фрейме).
    • greedy – если тело страницы не больше окна, поэтому необходимость в прокрутке является маловероятной.

Значок перехода в полноэкранный режим на мобильных устройствах является видимым по умолчанию, поэтому пользователи могут легко увеличить карту. Когда карта находится в полноэкранном режиме, пользователи могут двигать карту одним или двумя пальцами. Примечание. iOS не поддерживает переход в полноэкранный режим. По этой причине элемент управления для перехода в полноэкранный режим на устройствах iOS не отображается.

События

Когда пользователь прокручивает (перетаскивает) карту, API запускает, помимо прочих, следующие события:

  • drag: Многократно возникает в процессе перетаскивания карты.
  • dragstart: Возникает, когда пользователь начинает перетаскивать карту.
  • dragend: Возникает, когда пользователь заканчивает перетаскивать карту.

Подробнее см. руководство по событиям и справочную документацию.

Ограничения

К режимам, определяемым свойством gestureHandling, применяются следующие ограничения:

  • Только для сенсорных устройств. Свойства gestureHandling применяются только тогда, когда пользователь просматривает страницу на устройстве, которое поддерживает сенсорный интерфейс.
  • Только для событий касания. Свойства gestureHandling не применяются к событиям мыши или стилуса.
  • Не действуют для карт с включенной регистрацией. Свойства gestureHandling не применяются для карт с включенной регистрацией.
  • Не действуют для Street View. Свойства gestureHandling не применяются к службе Street View.

Оставить отзыв о...

Текущей странице
Google Maps JavaScript API
Google Maps JavaScript API
Нужна помощь? Обратитесь в службу поддержки.