Ich arbeite an einer WordPress-Site, auf der die Autoren Google Maps normalerweise mit iFrames in die meisten Beiträge einbetten.
Gibt es eine Möglichkeit, den Zoom über das Mausrad bei allen mit Javascript zu deaktivieren?
google-maps
scrollwheel
holiveira
quelle
quelle
scrollwheel
auf einfalse
.Antworten:
Ich hatte das gleiche Problem: Beim Scrollen der Seite wird der Zeiger über die Karte bewegt und beginnt, die Karte zu vergrößern / zu verkleinern, anstatt mit dem Scrollen der Seite fortzufahren. :((
Also habe ich dieses Putten
div
mit einem.overlay
genau vor jeder gmap-iframe
Einfügung gelöst , siehe:In meinem CSS habe ich die Klasse erstellt:
Das Div deckt die Karte ab und verhindert, dass Zeigerereignisse darauf zugreifen. Wenn Sie jedoch auf das Div klicken, wird es für Zeigerereignisse transparent und aktiviert die Karte erneut!
Ich hoffe dir wird geholfen :)
quelle
z-index
, damit es korrekt überlagert wird.Ich habe die erste Antwort in dieser Diskussion versucht und es hat bei mir nicht funktioniert, egal was ich getan habe, also habe ich meine eigene Lösung gefunden:
Umschließen Sie den Iframe mit einer Klasse (in diesem Beispiel .maps) und betten Sie im Idealfall den entsprechenden Code ein: http://embedresponsively.com/ - Ändern Sie das CSS des Iframes in und ändern Sie
pointer-events: none
dann mithilfe der Klickfunktion von jQuery das übergeordnete Element zupointer-events:auto
HTML
CSS
jQuery
Ich bin mir sicher, dass es nur eine JavaScript-Möglichkeit gibt, dies zu tun, wenn jemand etwas hinzufügen möchte.
Die JavaScript-Methode zum Reaktivieren der Zeigerereignisse ist ziemlich einfach. Geben Sie dem iFrame einfach eine ID (dh "iframe") und wenden Sie dann ein Onclick-Ereignis auf den cointainer div an:
quelle
pointer-events: none
verhindert jegliche Interaktion mit der Karte (Ziehen, Navigieren, Klicken usw.).$(this).find('iframe').css("pointer-events", "auto");
Ich habe die @ Nathanielperales-Lösung erweitert.
Unterhalb der Verhaltensbeschreibung:
Unter dem Javascript-Code:
Und hier ist ein jsFiddle-Beispiel .
quelle
$('.maps.embed-container').find('iframe').css("pointer-events", "none");
Ich bearbeite den von #nathanielperales geschriebenen Code erneut. Es hat wirklich für mich funktioniert. Einfach und leicht zu fangen, aber seine Arbeit nur einmal. Also habe ich mouseleave () in JavaScript hinzugefügt. Idee von #Bogdan angepasst Und jetzt ist es perfekt. Versuche dies. Credits gehen an #nathanielperales und #Bogdan. Ich habe gerade beide Ideen kombiniert. Danke Jungs. Ich hoffe das hilft auch anderen ...
HTML
CSS
jQuery
Improvisieren - anpassen - überwinden
Und hier ist ein jsFiddle-Beispiel.
quelle
pointer-events: auto
nachdem die Maus für eine bestimmte Dauer über der Karte "schwebte"? dh Timer starten, wenn die Maus in den Iframe eintritt, und zurücksetzen, wenn die Maus verlässt. Wenn der Timer X Millisekunden erreicht, wechseln Sie zupointer-events: auto
. Und wenn die Maus den Iframe verlässt, wechseln Sie einfach zurückpointer-events: none
.Ja, es ist ganz einfach. Ich hatte ein ähnliches Problem. Fügen Sie einfach die CSS-Eigenschaft "pointer-events" zum iframe div hinzu und setzen Sie sie auf 'none' .
Beispiel: <iframe style = "Zeigerereignisse: keine" src = ........>
SideNote: Dieser Fix würde alle anderen Mausereignisse auf der Karte deaktivieren. Es hat bei mir funktioniert, da wir keine Benutzerinteraktion auf der Karte benötigten.
quelle
quelle
Nach einigen Recherchen haben Sie 2 Möglichkeiten. Da neue Maps-APIs mit Iframe-Einbettung das Deaktivieren des Mausrads nicht zu unterstützen scheinen.
Zuerst würden alte Google Maps verwendet ( https://support.google.com/maps/answer/3045828?hl=de ).
Zweitens würde eine Javascript-Funktion erstellt, um das Einbetten einer Karte für jeden Kommentar und die Verwendung von Parametern zu vereinfachen (der Beispielcode dient nur zur Punktposition und zeigt keine exakte Lösung an).
quelle
Es gibt eine großartige und einfache Lösung.
Sie müssen eine benutzerdefinierte Klasse in Ihrem CSS hinzufügen, die die Zeigerereignisse so festlegt, dass die Zeichenfläche keiner zugeordnet wird:
Mit jQuery können Sie diese Klasse dann basierend auf verschiedenen Ereignissen hinzufügen und entfernen, zum Beispiel:
Ich habe ein Beispiel in jsfiddle erstellt , hoffe das hilft!
quelle
Ich registriere nur ein Konto auf developer.google.com und erhalte ein Token zum Aufrufen einer Maps-API. Deaktiviere das einfach wie folgt (Scrollrad: false):
quelle
Das ist mein Ansatz. Ich finde es einfach, auf verschiedenen Websites zu implementieren und es ständig zu verwenden
CSS und JavaScript:
Im HTML möchten Sie den Iframe in ein Div einschließen.
<div id="map" class="scrolloff" onclick="scrollOn()" onmouseleave="scrollOff()" >
Ich hoffe, dies hilft jedem, der nach einer einfachen Lösung sucht.
quelle
Hier ist eine einfache Lösung. Stellen Sie das
pointer-events: none
CSS einfach auf "<iframe>
Maus-Bildlauf deaktivieren".Wenn Sie möchten, dass der Mauslauf aktiviert wird, wenn der Benutzer auf die Karte klickt, verwenden Sie den folgenden JS-Code. Außerdem wird der Mauslauf wieder deaktiviert, wenn sich die Maus aus der Karte herausbewegt.
quelle
Um den Maus-Scrollrad-Zoom in eingebettetem Google Maps zu deaktivieren, müssen Sie nur die Zeigerereignisse der CSS-Eigenschaft des Iframes auf none setzen:
Das ist alles .. Ziemlich ordentlich, oder?
quelle
Nun, für mich war die beste Lösung, einfach so zu verwenden:
HTML:
CSS:
JS:
ERGEBNIS
Überlegungen:
Am besten fügen Sie eine Überlagerung mit einer dunkleren Transparenz mit einem Text hinzu: " Klicken zum Durchsuchen ", wenn das Mausrad deaktiviert ist. Wenn es jedoch aktiviert ist (nachdem Sie darauf geklickt haben), verschwindet die Transparenz mit Text und der Benutzer kann suchen die Karte wie erwartet. Irgendwelche Hinweise, wie das geht?
quelle
Fügen Sie Stil hinzu
pointer-events:none;
, der gut funktioniertquelle
Der einfachste Weg, dies zu tun, ist die Verwendung eines Pseudoelements wie
:before
oder:after
.Diese Methode erfordert keine zusätzlichen HTML-Elemente oder JQuery.
Wenn wir zum Beispiel diese HTML-Struktur haben:
Dann müssen wir nur noch den Wrapper relativ zu dem Pseudoelement erstellen, das wir erstellen, um das Scrollen zu verhindern
Danach erstellen wir das Pseudoelement, das über der Karte positioniert wird, um das Scrollen zu verhindern:
Und du bist fertig, keine Abfrage, keine zusätzlichen HTML-Elemente! Hier ist ein funktionierendes jsfiddle-Beispiel: http://jsfiddle.net/e6j4Lbe1/
quelle
Hier ist meine einfache Lösung.
Setzen Sie Ihren Iframe in ein Div mit einer Klasse namens "maps".
Dies ist das CSS für Ihren Iframe
Und hier ist ein kleines Javascript, das die Zeigerereignisseigenschaft des Iframes auf "auto" setzt, wenn Sie das div-Element mindestens 1 Sekunde lang bewegen (funktioniert am besten für mich - setzen Sie es auf einen beliebigen Wert) und das Timeout löscht / Setzen Sie es erneut auf "keine", wenn die Maus das Element verlässt.
Prost.
quelle
Ich habe ein sehr einfaches jQuery-Plugin erstellt, um das Problem zu beheben. Überprüfen Sie es unter https://diazemiliano.github.io/googlemaps-scrollprevent
quelle
Mit der Antwort von @nathanielperales habe ich die Schwebefunktion hinzugefügt, weil es für mich besser funktioniert, wenn der Benutzer den Fokus auf die Karte verliert, um das Scrollen wieder zu beenden :)
quelle
Variationen eines Themas: Eine einfache Lösung mit jQuery, keine CSS-Bearbeitung erforderlich.
Der Hover-Listener ist an das übergeordnete Element angehängt. Wenn also das aktuelle übergeordnete Element größer ist, können Sie den Iframe einfach vor der 3. Zeile mit einem Div umschließen.
Hoffe, es wird für jemanden nützlich sein.
quelle
Ich bin selbst auf dieses Problem gestoßen und habe ein Mashup von zwei sehr nützlichen Antworten auf diese Frage verwendet: Czerasz 'Antwort und Massa .
Beide haben eine Menge Wahrheit, aber irgendwo in meinen Tests habe ich herausgefunden, dass eines nicht für Handys funktioniert und schlechte IE-Unterstützung hat (funktioniert nur auf IE11). Dies ist die Lösung von nathanielperales, die dann von czerasz erweitert wurde, die auf Zeigerereignissen css basiert und auf Mobilgeräten nicht funktioniert (es gibt keinen Zeiger auf Mobilgeräten) und auf Mobilgeräten nicht funktioniert keiner Version von IE, die nicht v11 ist . Normalerweise würde es mich nicht weniger interessieren, aber es gibt eine Menge Benutzer da draußen und wir wollen eine konsistente Funktionalität. Deshalb habe ich mich für die Overlay-Lösung entschieden und einen Wrapper verwendet, um das Codieren zu vereinfachen.
Mein Markup sieht also so aus:
Dann sind die Stile wie folgt:
Zuletzt das Drehbuch:
Ich habe meine getestete Lösung auch in einem GitHub-Gist hinzugefügt , wenn Sie Sachen von dort bekommen möchten ...
quelle
Dies ist eine Lösung mit CSS und Javascript (dh Jquery, funktioniert aber auch mit reinem Javascript). Gleichzeitig reagiert die Karte. Vermeiden Sie das Zoomen der Karte beim Scrollen, aber die Karte kann durch Klicken aktiviert werden.
HTML / JQuery Javascript
CSS
Habe Spaß !
quelle
In Google Maps v3 können Sie jetzt das Scrollen zum Zoomen deaktivieren, was zu einer viel besseren Benutzererfahrung führt. Andere Kartenfunktionen funktionieren weiterhin und Sie benötigen keine zusätzlichen Divs. Ich dachte auch, dass es ein Feedback für den Benutzer geben sollte, damit er sehen kann, wenn das Scrollen aktiviert ist, also habe ich einen Kartenrand hinzugefügt.
quelle
Dadurch erhalten Sie eine reaktionsschnelle Google Map, die das Scrollen auf dem Iframe stoppt. Sobald Sie jedoch darauf klicken, können Sie zoomen.
Kopieren Sie diese und fügen Sie sie in Ihr HTML ein, aber ersetzen Sie den Iframe-Link durch Ihren eigenen. Er ist ein Artikel darüber mit einem Beispiel: Deaktivieren Sie den Maus-Scrollrad-Zoom in eingebetteten Google Map-Iframes
quelle
Hier wäre mein Ansatz dazu.
Pop dies in meine main.js oder ähnliche Datei:
Fügen Sie dann einfach ein leeres Div ein, in das die Karte auf Ihrer Seite erscheinen soll.
<div id="map"></div>
Sie müssen natürlich auch die Google Maps-API aufrufen. Ich habe einfach eine Datei namens mapi.js erstellt und in meinen Ordner / js geworfen. Diese Datei muss vor dem obigen Javascript aufgerufen werden.
Stellen Sie beim Aufrufen der Datei mapi.js sicher, dass Sie das Attribut sensor false übergeben.
dh:
<script type="text/javascript" src="js/mapi.js?sensor=false"></script>
Die neue Version 3 der API erfordert aus irgendeinem Grund die Einbeziehung eines Sensors. Stellen Sie sicher, dass Sie die Datei mapi.js vor Ihrer Datei main.js einfügen.
quelle
Für Google Maps v2 - GMap2:
quelle
Wenn Sie einen Iframe haben, der die in Google Map eingebettete API wie folgt verwendet:
Sie können diesen CSS-Stil hinzufügen: Zeiger-Ereignis: keine; ES.
quelle
Hier ist meine Sicht auf die Antwort von @nathanielperales, erweitert um @chams, jetzt wieder erweitert von mir.
HTML
jQuery
quelle
Das einfachste :
quelle
Fügen Sie dies Ihrem Skript hinzu:
quelle
Hier ist meine Lösung für das Problem: Ich habe eine WP-Site erstellt, daher gibt es hier einen kleinen PHP-Code. Der Schlüssel befindet sich jedoch
scrollwheel: false,
im Kartenobjekt.Hoffe das wird helfen. Prost
quelle