Я работаю над сайтом WordPress, где авторы обычно встраивают Карты Google, используя iFrames в большинстве постов.
Есть ли способ отключить масштабирование с помощью колеса прокрутки мыши на всех из них с помощью Javascript?
google-maps
scrollwheel
holiveira
источник
источник
scrollwheel
вfalse
.Ответы:
У меня возникла та же проблема: при прокрутке страницы указатель оказывается над картой, он начинает увеличивать / уменьшать карту вместо продолжения прокрутки страницы. :(
Поэтому я решил это полагая а
div
с.overlay
точно перед каждым GMAPiframe
вставки, см:В моем CSS я создал класс:
DIV будет покрывать карту, предотвращая попадание событий указателя на нее. Но если вы нажмете на div, он станет прозрачным для событий указателя, снова активируя карту!
Я надеюсь, что помог вам :)
источник
z-index
того, чтобы он правильно накладывался.Я попробовал первый ответ в этом обсуждении, и он не работал для меня, независимо от того, что я сделал, поэтому я нашел свое собственное решение:
Оберните iframe классом (в этом примере - .maps) и в идеале вставьте соответствующий код: http://embedresponsively.com/ - Измените CSS iframe на,
pointer-events: none
а затем с помощью функции click jQuery на родительский элемент, который вы можете изменить css iframes. вpointer-events:auto
HTML
CSS
JQuery
Я уверен, что есть единственный способ сделать это на JavaScript, если кто-то хочет добавить к этому, не стесняйтесь.
Способ JavaScript для повторной активации событий указателя довольно прост. Просто присвойте iFrame идентификатор (т. Е. «Iframe»), затем примените событие onclick к div-элементу cointainer
источник
pointer-events: none
предотвратит любое взаимодействие с картой (перетаскивание, навигация, щелчки и т. Д.).$(this).find('iframe').css("pointer-events", "auto");
Я расширил решение @nathanielperales.
Ниже описание поведения:
Ниже код JavaScript:
А вот пример jsFiddle .
источник
$('.maps.embed-container').find('iframe').css("pointer-events", "none");
Я заново редактирую код, написанный #nathanielperales, он действительно работал для меня. Просто и легко поймать, но его работа только один раз. Поэтому я добавил mouseleave () в JavaScript. Идея адаптирована из # Богдан И теперь его идеально. Попробуй это. Кредиты идут в #nathanielperales и #Bogdan. Я просто объединил обе идеи. Спасибо вам, ребята. Я надеюсь, что это также поможет другим ...
HTML
CSS
JQuery
Импровизация - Адаптация - Преодоление
А вот пример jsFiddle.
источник
pointer-events: auto
только после того, как мышь «зависла» над картой в течение некоторого времени? т.е. запускает таймер, когда мышь входит в iframe, и сбрасывает его, когда мышь уходит. Если таймер достигает X миллисекунд, переключитесь наpointer-events: auto
. И когда мышь покидает фрейм, вы просто переключаетесь обратноpointer-events: none
.Да, это довольно просто. Я столкнулся с подобной проблемой. Просто добавьте свойство css «pointer-events» в iframe div и установите для него значение «none» .
Пример: <iframe style = "pointer-events: none" src = ........>
SideNote: это исправление отключит все другие события мыши на карте. Это сработало для меня, так как нам не требовалось никакого взаимодействия с пользователем на карте.
источник
источник
После некоторых исследований у вас есть 2 варианта. Поскольку новые карты api с iframe embed, похоже, не поддерживают отключение колесика мыши.
Сначала нужно использовать старые карты Google ( https://support.google.com/maps/answer/3045828?hl=ru ).
Вторым было бы создание функции javascript для упрощения встраивания карты для каждого комментария и использования параметров (это пример кода только для указания местоположения, не показывающего точное решение)
источник
Есть отличное и простое решение.
Вам нужно добавить пользовательский класс в ваш CSS, который устанавливает события указателя для отображения холста на none:
Затем с помощью jQuery вы можете добавлять и удалять этот класс на основе различных событий, например:
Я создал пример в jsfiddle , надеюсь, это поможет!
источник
Я просто регистрирую один аккаунт на developers.google.com и получаю токен для вызова API Карт и просто отключаю это следующим образом (scrollwheel: false):
источник
Это мой подход. Я считаю, что это легко реализовать на разных сайтах и постоянно ими пользоваться
CSS и JavaScript:
В HTML вы захотите заключить iframe в div.
<div id="map" class="scrolloff" onclick="scrollOn()" onmouseleave="scrollOff()" >
Надеюсь, это поможет любому, кто ищет простое решение.
источник
Вот простое решение. Просто установите
pointer-events: none
CSS на,<iframe>
чтобы отключить прокрутку мыши.Если вы хотите, чтобы при нажатии пользователем на карту была активирована прокрутка мыши, используйте следующий код JS. Это также отключит прокрутку мыши снова, когда мышь выходит за пределы карты.
источник
Чтобы отключить масштабирование колеса прокрутки мыши во встроенных Картах Google, вам просто нужно установить для свойства css указателя-события iframe значение none:
Вот и все .. Довольно аккуратно, да?
источник
Что ж, для меня лучшим решением было просто использовать вот так:
HTML:
CSS:
JS:
РЕЗУЛЬТАТ
Соображения:
Лучше всего было бы добавить наложение с более темной прозрачностью с текстом: « Нажмите, чтобы просмотреть », когда колесо мыши деактивировано. Но когда оно активировано (после нажатия на него), тогда прозрачность с текстом исчезнет, и пользователь сможет просматривать карта, как и ожидалось. Любые подсказки, как это сделать?
источник
Добавить стиль
pointer-events:none;
это работает отличноисточник
Самый простой способ сделать это - использовать псевдоэлемент, например
:before
или:after
.Этот метод не потребует дополнительных HTML-элементов или jquery.
Если у нас есть, например, эта структура HTML:
Тогда все, что нам нужно сделать, это сделать оболочку относительно псевдоэлемента, который мы создадим, чтобы предотвратить прокрутку
После этого мы создадим псевдоэлемент, который будет расположен над картой для предотвращения прокрутки:
И все готово, без jquery, без дополнительных элементов HTML! Вот рабочий пример jsfiddle: http://jsfiddle.net/e6j4Lbe1/
источник
Вот мое простое решение.
Например, поместите свой iframe в div с классом «maps».
Это будет CSS для вашего iframe
А вот небольшой javascript, который установит для свойства указателя-события iframe значение «auto», когда вы наведите элемент div минимум на 1 секунду (лучше всего работает для меня - установите все, что вам нравится) и очистите тайм-аут / установите значение «none» еще раз, когда мышь покидает элемент.
Приветствия.
источник
Я создал очень простой плагин jQuery для решения проблемы. Проверьте это в https://diazemiliano.github.io/googlemaps-scrollprevent
источник
Используя ответ @nathanielperales, я добавил функцию наведения, потому что для меня это работает лучше, когда пользователь теряет фокус на карте, чтобы снова перестать прокручивать :)
источник
Вариации на тему: простое решение с jQuery, редактирование CSS не требуется.
Слушатель при наведении курсора прикреплен к родительскому элементу, поэтому, если текущий родительский элемент больше, вы можете просто обернуть элемент iframe в div перед третьей строкой.
Надеюсь, это кому-нибудь пригодится.
источник
Я сам наткнулся на этот вопрос и использовал несколько сочетаний двух очень полезных ответов на этот вопрос: ответ czerasz и ответ massa .
У них обоих много правды, но где-то в моих тестах я обнаружил, что один не работает для мобильных устройств и имеет плохую поддержку IE (работает только в IE11). Это решение от nathanielperales, затем расширенное czerasz, которое опирается на css-события указателя и не работает на мобильных устройствах (в мобильном нет указателя) и не работает ни на одной версии IE, кроме v11. , Обычно мне было бы все равно, но есть масса пользователей, и нам нужна согласованная функциональность, поэтому я решил использовать оверлейное решение, используя оболочку, чтобы упростить кодирование.
Итак, моя разметка выглядит так:
Тогда стили будут такими:
Наконец сценарий:
Я также добавил свое протестированное решение в GitHub , если вы хотите получить что-то оттуда ...
источник
Это решение с использованием CSS и Javascript (т. Е. Jquery, но работает и с чистым Javascript). В то же время карта отзывчива. Избегайте масштабирования карты при прокрутке, но карту можно активировать, щелкнув по ней.
HTML / JQuery Javascript
CSS
Радоваться, веселиться !
источник
В Google Maps v3 теперь вы можете отключить прокрутку для увеличения, что значительно облегчает работу пользователя. Другие функции карты по-прежнему будут работать, и вам не нужны дополнительные элементы div. Я также подумал, что должен быть какой-то отзыв для пользователя, чтобы он мог видеть, когда прокрутка включена, поэтому я добавил границу карты.
источник
Это даст вам отзывчивую карту Google, которая остановит прокрутку в iframe, но после нажатия позволит вам увеличить масштаб.
Скопируйте и вставьте это в свой HTML, но замените ссылку iframe своей. Он представляет собой статью на этом примере: отключите масштабирование колеса прокрутки мыши во встроенных фреймах Google Map.
источник
Вот мой подход к этому.
Вставьте это в мой main.js или подобный файл:
Затем просто вставьте пустой div, где вы хотите, чтобы карта появилась на вашей странице.
<div id="map"></div>
Вам, очевидно, нужно будет также позвонить в API Карт Google. Я просто создал файл с именем mapi.js и бросил его в папку / js. Этот файл должен быть вызван до вышеупомянутого JavaScript.
Когда вы вызываете файл mapi.js, убедитесь, что вы передали ему атрибут датчика false.
то есть:
<script type="text/javascript" src="js/mapi.js?sensor=false"></script>
Новая версия 3 API требует включения датчика по некоторым причинам. Убедитесь, что вы включили файл mapi.js перед вашим файлом main.js.
источник
Для карт Google v2 - GMap2:
источник
если у вас есть iframe, использующий встроенный API Google map, например:
Вы можете добавить этот стиль CSS: указатель-событие: нет; ES.
источник
Вот мой взгляд на ответ @nathanielperales, расширенный @chams, теперь снова расширенный мной.
HTML
JQuery
источник
Самый простой :
источник
Добавьте это к вашему сценарию:
источник
Вот мое решение проблемы, я создавал сайт WP, поэтому здесь есть небольшой php-код. Но ключ находится
scrollwheel: false,
в карте объекта.Надеюсь, это поможет. ура
источник