Вимкніть Ctrl + Прокрутіть, щоб збільшити масштаб карт Google


95

Хтось знає, як відключити CTRL+ Scroll?

Спочатку при переміщенні колеса миші карта буде збільшуватись / зменшуватись. Але тепер потрібно натиснути CTRL+ Прокрутка колеса миші, щоб збільшити / зменшити.

Як вимкнути цю функцію? Здається, я нічого не можу знайти в документації:

https://developers.google.com/maps/documentation/javascript/controls#ControlOptions

введіть тут опис зображення


Це посилання може допомогти вам stackoverflow.com/questions/21992498 / ...
Браджеш Kanungo

@BrajeshKanungo, який не пов’язаний із вищезазначеною функцією - ця нова функція, представлена ​​Google Maps - я хочу її відключити.
Dawood Awan,

Добре, скажіть мені, яку версію API ви використовуєте.
Браджеш Канунго,

остання версія - maps.googleapis.com/maps/api/js?v=3.exp
Dawood Awan

Це щойно з’явилось і на нашому веб-сайті, тому, ймовірно, оновлення API googles
Том,

Відповіді:


153

Вам потрібно перейти gestureHandling: 'greedy'до опцій вашої карти.

Документація: https://developers.google.com/maps/documentation/javascript/interaction#gestureHandling

Наприклад:

const map = new google.maps.Map(mapElement, {
  center: { 0, 0 },
  zoom: 4,
  gestureHandling: 'greedy'
});

Оновлення! Оскільки Google Maps 3.35.6потрібно вкласти властивість у обгортку опцій:

const map = new google.maps.Map(mapElement, {
  center: { 0, 0 },
  zoom: 4,
  options: {
    gestureHandling: 'greedy'
  }
});

Дякую ealfonsoза нову інформацію


@DiegoAndrade Я не знаю деталей. можливо, це не було реалізовано тоді. Але він присутній у версіях 3.29(заморожений), 3.30(випуск) і вгору ( 3.exp, експериментальний).
kano

Так @Kano, у цих документах ця функція все ще присутня, але на моїх тестах тут вона не працює. Я справді не знаю, чому вони це видалили :(
Дієго Андраде

1
Я знаю, що він присутній. В тім-то й річ. Починаючи з 3.30Це не працює. Я протестував усі ці версії. У будь-якому випадку, це вже працює з 3.26.
Дієго Андраде

3
нарешті правильна відповідь. Мені довелося довго шукати для цього. Чому Google не зробив це за замовчуванням, мені не під силу.
ослаблення

2
Бінго, це ідеальне рішення.
N Khan

17

Якщо у вас все гаразд із повним вимкненням масштабування, можна скористатися scrollwheel: false. Користувач все одно зможе збільшувати карту, натискаючи кнопки масштабування, якщо ви надаєте їм елемент керування масштабуванням ( zoomControl: true).

Документація: https://developers.google.com/maps/documentation/javascript/reference (шукайте на сторінці "колесо прокрутки")

const map = new google.maps.Map(mapElement, {
  center: { 0, 0 },
  zoom: 4,
  scrollwheel: false,
  zoomControl: true
});

7

Якщо ви хочете лише приховати накладене зображення, але при цьому вимкнути можливість прокрутки та масштабування (як раніше), ви можете використати CSS, щоб приховати накладене зображення:

.gm-style-pbc {
opacity: 0 !important;
}

Зауважте, це буде приховано і для мобільних пристроїв, щоб ви могли використати щось подібне, щоб переконатися, що на ньому відображається "рухати карту двома пальцями":

@media only screen and ( min-width: 980px ) {
.gm-style-pbc {
opacity: 0 !important;
}
}

Дякую. Я здивований, що більше людей цього не хочуть. Це дуже відволікаюче накладене повідомлення, яке для мене практично руйнує досвід роботи з картою.
BaseZen

5

Вкладання gestureHandlingв optionsвластивість працювало для мене у версії "3.35.6".

map = new google.maps.Map(document.getElementById('map'), {
        zoom: 12,
        options:{
            gestureHandling: 'greedy'
        }
    });

4

Я не зміг отримати gestureHandling: 'greedy'виправлення для мене, оскільки у мене було накладання на карту. Врешті-решт я виявив mousewheelподію і встановив для ctrlвластивості значення true.

// Load maps and attach event listener to scroll event.
var $map = $('.map');
$map[0].addEventListener('wheel', wheelEvent, true);         

function wheelEvent(event) {
    // Set the ctrlKey property to true to avoid having to press ctrl to zoom in/out.
    Object.defineProperty(event, 'ctrlKey', { value: true });
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.