Saya sedang mengerjakan situs WordPress tempat penulis biasanya menyematkan Google Maps menggunakan iFrames di sebagian besar posting.
Apakah ada cara untuk menonaktifkan zoom melalui roda gulir mouse pada mereka semua menggunakan Javascript?
google-maps
scrollwheel
holiveira
sumber
sumber
scrollwheel
kefalse
.Jawaban:
Saya mengalami masalah yang sama: ketika menggulir halaman kemudian penunjuk menjadi di atas peta, mulai memperbesar / memperkecil peta alih-alih melanjutkan menggulir halaman. :(
Jadi saya memecahkan masalah menempatkan ini
div
dengan.overlay
tepat sebelum setiapiframe
penyisipan gmap , lihat:Di CSS saya, saya membuat kelas:
Div akan mencakup peta, mencegah peristiwa penunjuk untuk sampai ke sana. Tetapi jika Anda mengklik div, itu menjadi transparan untuk mengarahkan peristiwa, mengaktifkan kembali peta!
Saya harap bisa membantu Anda :)
sumber
z-index
agar overlay dengan benar.Saya mencoba jawaban pertama dalam diskusi ini dan itu tidak berhasil bagi saya tidak peduli apa yang saya lakukan jadi saya datang dengan solusi saya sendiri:
Bungkus iframe dengan kelas (.maps dalam contoh ini) dan idealnya kode responsif: http://embedresponsively.com/ - Ubah CSS iframe ke
pointer-events: none
kemudian gunakan fungsi klik jQuery ke elemen induk Anda dapat mengubah iframes css untukpointer-events:auto
HTML
CSS
jQuery
Saya yakin hanya ada cara JavaScript untuk melakukan ini, jika seseorang ingin menambahkan ini, jangan ragu.
Cara JavaScript untuk mengaktifkan kembali pointer-events cukup sederhana. Berikan saja Id ke iFrame (yaitu "iframe"), lalu terapkan acara onclick ke div cointainer:
sumber
pointer-events: none
akan mencegah interaksi dengan peta (seret, navigasi, klik, dll).$(this).find('iframe').css("pointer-events", "auto");
Saya memperluas solusi @nathanielperales.
Di bawah deskripsi perilaku:
Di bawah kode javascript:
Dan ini adalah contoh jsFiddle .
sumber
$('.maps.embed-container').find('iframe').css("pointer-events", "none");
Saya mengedit ulang kode yang ditulis oleh #nathanielperales itu benar-benar bekerja untuk saya. Sederhana dan mudah ditangkap tetapi kerjanya hanya sekali. Jadi saya menambahkan mouseleave () di JavaScript. Ide diadaptasi dari #Bogdan Dan sekarang ini sempurna. Coba ini. Kredit diberikan ke #nathanielperales dan #Bogdan. Saya baru saja menggabungkan kedua ide itu. Terima kasih kawan. Saya harap ini akan membantu orang lain juga ...
HTML
CSS
jQuery
Berimprovisasi - Beradaptasi - Mengatasi
Dan ini adalah contoh jsFiddle.
sumber
pointer-events: auto
hanya setelah mouse "melayang" di atas peta untuk jangka waktu tertentu? yaitu mulai timer ketika mouse memasuki iframe dan reset ketika mouse pergi. Jika timer mencapai X milidetik, alihkan kepointer-events: auto
. Dan setiap kali mouse meninggalkan iframe Anda hanya beralih kembali kepointer-events: none
.Ya itu cukup mudah. Saya menghadapi masalah yang sama. Cukup tambahkan properti css "pointer-events" ke iframe div dan set ke 'none' .
Contoh: <iframe style = "pointer-events: none" src = ........>
SideNote: Perbaikan ini akan menonaktifkan semua acara mouse lainnya di peta. Ini bekerja untuk saya karena kami tidak memerlukan interaksi pengguna di peta.
sumber
sumber
Setelah melakukan riset, Anda memiliki 2 opsi. Karena api peta baru dengan embr iframe tampaknya tidak mendukung penonaktifan roda mouse.
Pertama akan menggunakan peta google lama ( https://support.google.com/maps/answer/3045828?hl=id ).
Kedua adalah membuat fungsi javascript untuk menyederhanakan penyematan peta untuk setiap komentar dan menggunakan parameter (itu kode sampel hanya untuk menunjukkan lokasi tidak menunjukkan solusi yang tepat)
sumber
Ada solusi yang luar biasa dan mudah.
Anda perlu menambahkan kelas khusus di css Anda yang mengatur acara pointer ke kanvas peta ke none:
Kemudian, dengan jQuery, Anda dapat menambah dan menghapus kelas itu berdasarkan berbagai peristiwa, misalnya:
Saya telah membuat contoh di jsfiddle , semoga bisa membantu!
sumber
Saya hanya mendaftarkan satu akun di developers.google.com dan mendapatkan token untuk panggilan Maps API, dan cukup nonaktifkan yang seperti ini (scrollwheel: false):
sumber
Ini pendekatan saya. Saya merasa mudah menerapkannya di berbagai situs web dan menggunakannya setiap saat
CSS dan JavaScript:
Dalam HTML, Anda ingin membungkus iframe dalam div.
<div id="map" class="scrolloff" onclick="scrollOn()" onmouseleave="scrollOff()" >
Semoga ini bisa membantu orang mencari solusi sederhana.
sumber
Ini solusi sederhana. Cukup setel
pointer-events: none
CSS ke<iframe>
untuk menonaktifkan gulir mouse.Jika Anda ingin gulir mouse diaktifkan ketika pengguna mengklik peta, maka gunakan kode JS berikut. Ini juga akan menonaktifkan gulir mouse lagi, ketika mouse bergerak keluar dari peta.
sumber
Untuk menonaktifkan zoom roda gulir mouse pada Google Maps yang disematkan, Anda hanya perlu mengatur event pointer-properti css dari iframe ke none:
Thats All .. Cukup rapi ya?
sumber
Nah, bagi saya solusi terbaik adalah dengan menggunakan seperti ini:
HTML:
CSS:
JS:
HASIL
Pertimbangan:
Yang terbaik adalah menambahkan hamparan dengan transparansi yang lebih gelap dengan teks: " Klik untuk meramban " ketika roda mouse dinonaktifkan Tetapi ketika diaktifkan (setelah Anda mengkliknya) maka transparansi dengan teks akan hilang dan pengguna dapat menelusuri peta seperti yang diharapkan. Adakah petunjuk bagaimana melakukannya?
sumber
Tambahkan gaya
pointer-events:none;
ini berfungsi dengan baiksumber
Cara paling sederhana untuk melakukannya adalah dengan menggunakan elemen pseudo seperti
:before
atau:after
.Metode ini tidak memerlukan elemen html atau jquery tambahan.
Jika kita memiliki misalnya struktur html ini:
Maka yang perlu kita lakukan hanyalah membuat wrapper relatif terhadap elemen semu yang akan kita buat untuk mencegah pengguliran
Setelah ini kita akan membuat elemen pseudo yang akan diposisikan di atas peta untuk mencegah pengguliran:
Dan Anda selesai, tidak ada jquery, tidak ada elemen html tambahan! Ini adalah contoh jsfiddle yang berfungsi: http://jsfiddle.net/e6j4Lbe1/
sumber
Ini solusi sederhana saya.
Masukkan iframe Anda dalam div dengan kelas yang disebut "peta" misalnya.
Ini akan menjadi CSS untuk iframe Anda
Dan di sini ada sedikit javascript yang akan mengatur properti pointer-events dari iframe menjadi "auto" ketika Anda mengarahkan elemen div setidaknya selama 1 detik (paling cocok untuk saya - atur sesuai keinginan Anda) dan hapus timeout / atur ke "none" lagi ketika mouse meninggalkan elemen.
Bersulang.
sumber
Saya telah membuat plugin jQuery yang sangat sederhana untuk menyelesaikan masalah. Periksa di https://diazemiliano.github.io/googlemaps-scrollprevent
sumber
Menggunakan jawaban dari @nathanielperales saya telah menambahkan fungsi hover karena bagi saya itu berfungsi lebih baik ketika pengguna kehilangan fokus pada peta untuk berhenti menggulir lagi :)
sumber
Variasi pada tema: solusi sederhana dengan jQuery, tidak perlu pengeditan CSS.
Hover listener dilampirkan ke elemen induk, jadi jika induk saat ini lebih besar, Anda bisa membungkus iframe dengan div sebelum baris ke-3.
Semoga bermanfaat bagi seseorang.
sumber
Saya menemukan masalah ini sendiri dan menggunakan beberapa dari dua jawaban yang sangat berguna pada pertanyaan ini: jawaban dan massa czerasz .
Mereka berdua memiliki banyak kebenaran, tetapi di suatu tempat dalam pengujian saya, saya menemukan bahwa satu tidak berfungsi untuk seluler dan memiliki dukungan IE yang buruk (hanya berfungsi pada IE11). Ini adalah solusi oleh nathanielperales, kemudian diperpanjang oleh czerasz, yang bergantung pada pointer-events css dan itu tidak berfungsi pada ponsel (tidak ada pointer di ponsel) dan itu tidak bekerja pada versi IE mana pun yang tidak v11 . Biasanya saya tidak peduli, tetapi ada satu ton pengguna di luar sana dan kami ingin fungsionalitas yang konsisten, jadi saya menggunakan solusi overlay, menggunakan pembungkus untuk membuatnya lebih mudah untuk kode.
Jadi, markup saya terlihat seperti ini:
Maka gayanya seperti ini:
Terakhir skrip:
Saya juga menambahkan solusi teruji saya di inti GitHub , jika Anda ingin mendapatkan barang dari sana ...
sumber
Ini adalah solusi dengan CSS dan Javascript (mis. Jquery tetapi berfungsi juga dengan Javascript murni). Pada saat yang sama peta responsif. Hindari peta untuk memperbesar ketika menggulir, tetapi peta dapat diaktifkan dengan mengklik di dalamnya.
HTML / JQuery Javascript
CSS
Selamat bersenang-senang !
sumber
Di Google Maps v3 Anda sekarang dapat menonaktifkan gulir untuk memperbesar, yang mengarah pada pengalaman pengguna yang jauh lebih baik. Fungsi peta lainnya masih akan berfungsi dan Anda tidak perlu div tambahan. Saya juga berpikir harus ada umpan balik bagi pengguna sehingga mereka dapat melihat ketika bergulir diaktifkan, jadi saya menambahkan perbatasan peta.
sumber
Ini akan memberi Anda Google Map responsif yang akan menghentikan pengguliran pada iframe, tetapi sekali diklik akan membuat Anda memperbesar.
Salin dan tempel ini ke html Anda tetapi ganti tautan iframe dengan milik Anda. Dia adalah artikel di atasnya dengan contoh: Nonaktifkan zoom roda gulir mouse pada iframe Google Map yang disematkan
sumber
Ini akan menjadi pendekatan saya untuk ini.
Pop ini ke main.js saya atau file serupa:
Kemudian cukup masukkan div kosong di mana Anda ingin peta muncul di halaman Anda.
<div id="map"></div>
Anda jelas perlu menelepon di Google Maps API juga. Saya cukup membuat file bernama mapi.js dan melemparkannya ke folder / js saya. File ini perlu dipanggil sebelum javascript di atas.
Ketika Anda memanggil file mapi.js pastikan Anda memberikannya atribut false sensor.
yaitu:
<script type="text/javascript" src="js/mapi.js?sensor=false"></script>
Versi 3 API yang baru membutuhkan penyertaan sensor karena beberapa alasan. Pastikan Anda memasukkan file mapi.js sebelum file main.js Anda.
sumber
Untuk google maps v2 - GMap2:
sumber
jika Anda memiliki iframe menggunakan Google map embedded API seperti ini:
Anda dapat menambahkan gaya css ini: pointer-event: none; ES
sumber
Inilah jawaban saya atas jawaban @nathanielperales yang diperpanjang oleh @chams, sekarang diperpanjang lagi oleh saya.
HTML
jQuery
sumber
Yang paling sederhana :
sumber
Tambahkan ini ke skrip Anda:
sumber
Ini solusi saya untuk masalah ini, saya membangun situs WP, jadi ada sedikit kode php di sini. Tetapi kuncinya ada
scrollwheel: false,
di objek peta.Semoga ini bisa membantu. Bersulang
sumber