Leaflet: Problem mit dem Scrollwheel-Zoom in Chrome

Erstellt am 4. Mai 2016  ·  70Kommentare  ·  Quelle: Leaflet/Leaflet

Ich habe seit der Aktualisierung auf die neueste Faltblattversion festgestellt, dass alle meine Scrollrad-Zooms jetzt jedes Mal, wenn ich mein Scrollrad verwende, 2 Zoomstufen in Chrom anstatt einer springen.

Das Problem scheint das Ergebnis der Verwendung eines Standardwerts von '50' für WheelPxPerZoomLevel zur Steuerung der Zoomgeschwindigkeit zu sein, während eine normalisierte Funktion getWheelDelta verwendet wird, die Ihre Scrollraddaten in einen standardisierten Wert konvertiert. In Chrome gibt meine getWheelDelta -Funktion 100 für eine einzelne Schriftrolle auf dem Scrollrad zurück, während Firefox nur 50 zurückgibt

blocker bug

Alle 70 Kommentare

Es passiert hier https://github.com/Leaflet/Leaflet/blob/master/src/map/handler/Map.ScrollWheelZoom.js#L67

Warum verwenden wir hier Math.ceil während wir in _limitZoom Math.round ?

Anekdotisch würde ich dem zustimmen, Chrome scheint beim Scrollen-Zoomen viel empfindlicher zu sein als Firefox.

Dieser Code ist sehr sensibel ... Wichtig ist, dass wir ihn zwischen den Leaflet-Versionen nicht geändert haben. Zumindest haben wir mit @IvanSanchez sichergestellt, dass er die gleichen Ergebnisse

@MuellerMatthew @ktoto können Sie testen, welche genaue Leaflet-Version sich anders verhält. Ist es Beta2 oder nur RC1? Sie können es hier auf dem Spielplatz ausprobieren:
http://playground-leaflet.rhcloud.com/

@ Hyperknot

  • rc1 überspringt Zoomstufen in der Chrome- Demo
  • Beta2 überspringt keine Zoomstufen- Demo

@MuellerMatthew ok, das ist dann ein ziemlich schwerwiegender Fehler, wir werden ihn so schnell wie möglich beheben.

Können Sie melden, welches Betriebssystem Sie verwenden und mit welchem ​​Gerät? Welche Werte erhalten Sie auch auf http://mousewheeldatacollector.herokuapp.com/ ?

Chrome 50.0.2661 / Windows 7
Werte:
Min (Norm, roh): 1, 100
Max (Norm, roh): 1, 100
Auflösung: 100

Ich verwende eine Standard-Maus mit Dell-Scrollrad.

@MuellerMatthew und was für eine Maus? Nur eine normale USB-Maus mit Rad?

Ja.

OK, ich werde versuchen, dies in einer VM mit einer USB-Maus zu testen. Auch @IvanSanchez, können Sie einen zweiten Blick darauf werfen?

@hyperknot Ich habe die gleichen Ergebnisse wie @MuellerMatthew.
Beta2 - ok
rc1 - Zoom überspringen.

Ich benutze auch eine Standard-USB-Maus.

Ja, es scheint, dass das delta des WheelEvent in Win7 100 in Chrom ist. :wütend:

wheel-event

Ich habe auch eine kurze Überprüfung mit einem Bildschirmlineal durchgeführt und erstaunlicherweise scrollt Chrome in Win7 tatsächlich 100 Pixel pro Radklick, während es in Linux 50 Pixel scrollt.

Firefox verwendet stattdessen DeltaMode=1 um Zeilen anstelle von Pixeln zu scrollen.

Wir könnten einen Browser-Hack durchführen und die veraltete wheelDelta -Eigenschaft (die wir für gescrollte Pixel im Legacy-IE verwenden, die immer +/- 120 ist) verwenden und möglicherweise die chromspezifischen sourceCapabilities ausspionieren WheelEvent .

Ich bin teilweise daran interessiert, dies als Upstream-Fehlerbericht an die Chrome-Leute zu senden. Gedanken?

@MuellerMatthew Verwenden Sie zufällig eine virtuelle Maschine?

@ktoto Welches Betriebssystem und welche Version verwenden Sie?

@IvanSanchez - Nein, ich habe keine VM.

Anscheinend hat das "Chrome UI Team" entschieden, dass 100 Pixel / Rad-Tick "das Beste" ist: https://bugs.chromium.org/p/chromium/issues/detail?id=38378

Kommentar 6 von [email protected] , 19. März 2010

Unabhängig davon ist das Chrome UI-Team der Ansicht, dass ein 100-Pixel-Bildlauf für ein Fenster mit durchschnittlicher Größe, der etwa 1/8 des Bildschirms scrollt, ein guter Wert ist. Letztendlich sind wir uns also einfach nicht einig.

Siehe auch https://bugs.chromium.org/p/chromium/issues/detail?id=521211 - eine Wiedereröffnung lohnt sich.

Mir scheint, es gibt zwei Maßnahmen, die ergriffen werden sollten.

  1. Wir sollten auf die Chrome-Benutzeroberfläche upstreamen, da deren Browser in verschiedenen Betriebssystemen unterschiedlich reagiert. Wenn sie möchten, dass ihr Browser anders scrollt, können sie dies, obwohl es eine vernünftige Erwartung ist, dass er auf allen Betriebssystemplattformen gleich funktioniert.
  2. Um das Zoomen in der Broschüre zu korrigieren, sollten wir meiner Meinung nach die Funktion vereinfachen und die Anzahl der Pixel, die jeder Browser für seine Zoomstufen hat, bei der Berechnung des Zooms nicht mehr verwenden und stattdessen die Anzahl der Zoomereignisse und die vom Browser ausgelöste Zoomrichtung innerhalb des zählen wheelDebounceTime timer und multiplizieren Sie ihn mit einer Variablen, die ähnlich wie die Eigenschaft wheelPxPerZoomLevel funktioniert, die von Kartenentwicklern verwendet wird, um die bevorzugte Größe jedes Zooms anzugeben. Auf diese Weise können wir sicherstellen, dass die Karte unabhängig von den Einstellungen eines einzelnen Browsers immer wie von einem Entwickler definiert funktioniert und zoomt.

Wir sollten [...] aufhören, die Anzahl der Pixel zu verwenden, die jeder Browser [...] hat, und stattdessen die Anzahl der Zoomereignisse und die Zoomrichtung zählen

Das ist keine Option. Das Scrollen mit zwei Fingern auf einigen Trackpads (insbesondere in Macbooks) löst wheel Ereignisse mit einem Pixelabstand aus. Mit Ihrem Vorschlag würden sogar winzige Bewegungen auf dem Trackpad die Zoomstufen herumspringen.

Wir müssen auch das Scrollen auf Firefox auf Hi-Dpi-Bildschirmen überprüfen. Gemäß dem Code von openlayers anad mapbox.js verdoppeln sich die Pixel-Scroll-Werte dort.

@IvanSanchez Win 7 x64.

Laut meinen VMs scheint dies auch in Win10 zu passieren (und ich werde auch auf Win8 raten).

@MuellerMatthew @ktoto Wir haben einen Fix in Leaflet Master implementiert. Können Sie ihn auf dem Spielplatz ausprobieren und "Leaflet Development Version" auswählen?

@hyperknot - Alles scheint in der "Leaflet Development Version" auf dem Spielplatz zu funktionieren. Ich habe die Scrollräder in Chrome und Firefox getestet und die Ergebnisse waren identisch.

Getestet und festgestellt, dass Zeile 230 in DomEvent.js geändert werden sollte in:
_wheelPxFactor: ((L.Browser.win && L.Browser.chrome)||L.Browser.safari) ? 2 : L.Browser.edge ? 3 : (L.Browser.gecko) ? window.devicePixelRatio : 1,

@SveinLoken Warum?

Mit dem Standardwert 3 Zeilen zum Scrollen unter Windows 10 64 Bit habe ich this._delta:
Chrome: 50
Firefox: 54
Safari: 120
Kante: 122,7
IE11: 60

Ohne spezielle Behandlung von Edge und Safari werden 2 Zoomstufen mit zoomSnap: 1 (Standard) übersprungen.

Ich musste auch die Erkennung von L.Browser.edge ändern. For Edge sendet "chrome" in navigator.userAgent.

Code-Auszug:
`...
opera12 = 'OTransition' in doc.style,
edge = 'msLaunchUri' im Navigator &&! ('documentMode' im Dokument);

var touch = !window.L_NO_TOUCH && (pointer || 'ontouchstart' in window ||
        (window.DocumentTouch && document instanceof window.DocumentTouch));

L.Browser = {

    // <strong i="10">@property</strong> ie: Boolean
    // `true` for all Internet Explorer versions (not Edge).
    ie: ie,

    // <strong i="11">@property</strong> ielt9: Boolean
    // `true` for Internet Explorer versions less than 9.
    ielt9: ie && !document.addEventListener,

    // <strong i="12">@property</strong> edge: Boolean
    // `true` for the Edge web browser.
    edge: edge,

    // <strong i="13">@property</strong> webkit: Boolean
    // `true` for webkit-based browsers like Chrome and Safari (including mobile versions).
    webkit: webkit,

    // <strong i="14">@property</strong> gecko: Boolean
    // `true` for gecko-based browsers like Firefox.
    gecko: gecko,

    // <strong i="15">@property</strong> android: Boolean
    // `true` for any browser running on an Android platform.
    android: ua.indexOf('android') !== -1,

    // <strong i="16">@property</strong> android23: Boolean
    // `true` for browsers running on Android 2 or Android 3.
    android23: android23,

    // <strong i="17">@property</strong> chrome: Boolean
    // `true` for the Chrome browser.
    chrome: chrome && !edge,

`

@SveinLoken Wenn Sie möchten , tun Sie dies in einer Pull-Anfrage, nicht in Kommentaren.

Ich bin kein Leaflet-Experte. Bitte nehmen Sie dies als Code-Vorschlag.

Letzter Vorschlag:
Mit zoomSnap! = 0 fühlt es sich nicht natürlich an, dass TouchZoom zurückprallt, wenn nicht mehr als zoomSnap / 2 gezoomt wird. Dies scheint eine bessere Handhabung zu geben:

`_onTouchEnd: function () {
...
if (this._map.options.zoomAnimation) {
var snap = L.Browser.any3d? this._map.options.zoomSnap: 1;
if (snap) {
if (this._startZoom> this._zoom) this._zoom = this._zoom - snap;
sonst wenn (this._startZoom <this._zoom) this._zoom = this._zoom + snap;
}}

...
`

@SveinLoken Do. Nicht. Vorschlagen. Code. Änderungen. Im. Bemerkungen.

Es gibt keinen Unterschied, sie sind unmöglich zu lesen.

 Index: ../tjac-common/tjac-core/src/main/resources/META-INF/assets/jacillacore/leaflet1.0.0-rc.1+d4ea412/leaflet-src.js
 IDEE zusätzliche Informationen:
 Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
 UTF-8
 ================================================== =================
 --- ../tjac-common/tjac-core/src/main/resources/META-INF/assets/jacillacore/leaflet1.0.0-rc.1+d4ea412/leaflet-src.js (Revision 772: 514824f6bb9038fa9f5d75aff0cc67033)
 +++ ../tjac-common/tjac-core/src/main/resources/META-INF/assets/jacillacore/leaflet1.0.0-rc.1+d4ea412/leaflet-src.js (Revision)
 @ -744,13 +744,14 @@
 ie3d = ie && ('Übergang' in doc.style),
 webkit3d = ('WebKitCSSMatrix' im Fenster) && ('m11' im neuen Fenster.WebKitCSSMatrix ()) &&! android23,
 gecko3d = 'MozPerspective' in doc.style,
 - opera12 = 'OTransition' in doc.style;
 + opera12 = 'OTransition' in doc.style,
 + edge = 'msLaunchUri' im Navigator &&! ('documentMode' im Dokument);


 var touch =! window.L_NO_TOUCH && (Zeiger || 'ontouchstart' im Fenster ||
 (window.DocumentTouch && document instanceof window.DocumentTouch));

 - L.Browser = {
 + L.Browser = {

 // @property dh: Boolean
 // `true` für alle Internet Explorer-Versionen (nicht Edge).
 @ -762,7 +763,7 @@

 // @property edge: Boolean
 // `true` für den Edge-Webbrowser.
 - Kante: 'msLaunchUri' im Navigator &&! ('documentMode' im Dokument),
 + Kante: Kante,

 // @property Webkit: Boolean
 // `true` für Webkit-basierte Browser wie Chrome und Safari (einschließlich mobiler Versionen).
 @@ -782,7 +783,7 @@

 // @property chrome : Boolean
 // `true` für den Chrome-Browser.
 - Chrom: Chrom,
 + Chrom: Chrom &&! Kante,

 // @property safari : Boolean
 // `true` für den Safari-Browser.
 @ -9442,7 +9443,8 @@

 // Chrome on Win scrollt doppelt so viele Pixel wie auf anderen Plattformen (siehe # 4538),
 // und Firefox scrollt Gerätepixel, nicht CSS-Pixel
 - _wheelPxFactor: (L.Browser.win && L.Browser.chrome)? 2:
 + _wheelPxFactor: ((L.Browser.win && L.Browser.chrome) || L.Browser.safari)? 2:
 + L.Browser.edge? 3 :
 (L.Browser.gecko)? window.devicePixelRatio:
 1,

 @@ -10489,6 +10491,11 @@

 // Pinch aktualisiert die Levels von GridLayers nur, wenn snapZoom deaktiviert ist, sodass snapZoom zu noUpdate wird.
 if (this._map.options.zoomAnimation) {
 + var snap = L.Browser.any3d? this._map.options.zoomSnap: 1;
 + if (snap) {
 + if (this._startZoom> this._zoom) this._zoom = this._zoom - snap;
 + else if (this._startZoom <this._zoom) this._zoom = this._zoom + snap;
 +}
 this._map._animateZoom (this._center, this._map._limitZoom (this._zoom), true, this._map.options.snapZoom);
 } else {
 this._map._resetView (this._center, this._map._limitZoom (this._zoom));

@SveinLoken danke für die Arbeit an diesem und Ihren Vorschlägen, aber das Format ist wirklich schwer zu bearbeiten.

Diffs sind schwer zu lesen, und Sie haben auch den Unterschied zur _built_- Version von Leaflet anstelle des eigentlichen Quellcodes gemacht.

Wenn Sie das Repo teilen, Ihre Änderungen festschreiben und eine Pull-Anfrage auf GitHub erstellen, ist es viel wahrscheinlicher, dass jemand Ihre Änderungen verwendet. Wenn Sie diesen Workflow nicht befolgen, werden die ohnehin schon ziemlich angespannten Leaflet-Entwickler unnötig belastet!

OK @perliedman und @IvanSanchez , das haben wir vorher noch nicht gemacht, aber ich habe jetzt die Pull-Anfrage # 4594 erstellt

Ist dieses Problem behoben? Ich verwende das neueste Commit aus dem Hauptzweig und bekomme unter Chrome Version 50.0.2661.102 m unter @Windows 10 genau den dreifachen Zoom mit dem Maus- einwandfrei .

@niamleeson Siehe: # 4592

@SveinLoken Wird das Problem durch etwas verursacht, das tiefer liegt als die

@SveinLoken - , ob die Entwicklungsversion der Broschüre Ebenen überspringt? Die Konsole in der Sandbox sollte die Zoomstufe anzeigen, wenn Sie hinein- oder herauszoomen.

@MuellerMatthew Mit einer Bildschirmauflösung von 2560x1600 springt Edge 2 Zoomstufen (auch in kleineren Fenstern). Chrome ist für mich in Ordnung.
@niamleeson Haben Sie in der Windows-Einstellung überprüft, wie viele Zeilen jedes Mal für das Mausrad gescrollt werden sollen? (Standard ist 3).

@SveinLoken Ich habe meine auf 9 Zeilen gleichzeitig gesetzt. Ich habe es auf Standard 3 geändert, aber das Problem besteht immer noch.

Ich habe gerade rc2 ausprobiert. Meine Ergebnisse stammen aus Windows 10, den neuesten Versionen von Chrome, Firefox, Edge und IE. Ein einzelner Bildlauf auf einer Maus entspricht in der Tat einer einzelnen Änderung der Zoomstufe unter den Standardeinstellungen für die Broschüre, wobei die Einstellung meines Betriebssystem-Mausrads 3 Zeilen pro Einstellung beträgt scrollen, was toll ist.

Für Leaflet _users_ möchten wir möglicherweise die WheelPxPerZoomLevel-Option erweitern, um Endbenutzern Rechnung zu tragen, die möglicherweise eine etwas höhere OS-Mausradeinstellung verwenden.

Bei einer Betriebssystemeinstellung von 7 Zeilen pro Bildlauf musste ich beispielsweise WheelPxPerZoomLevel auf 100 setzen, damit 1 Zoomstufe pro Bildlauf geändert wird. Das Einstellen von radPxPerZoomLevel auf 100 funktioniert auch gut für Benutzer mit einer Betriebssystemeinstellung von 1 Zeile pro Bildlauf (aus meinen Tests).

Ist diese Ausgabe wirklich geschlossen? Ich bekomme dies immer noch mit der neuesten stabilen Version von Bower und auch im obigen Link auf Chrome + Win 10, 4k-Bildschirm.
Was sollte ich tun?
Seite ist hier:
http://israelhiking.osm.org.il/

@HarelM Das Problem beim

Kann dieses Problem dann wieder geöffnet werden oder ist es in Version 1.0 behoben, von der ich gehört habe, dass sie veröffentlicht wurde?

@ HarelM Ich benutze 1.0. Ich glaube nicht, dass es behoben ist.

Stirbt die Broschüre? Dieses Problem ist ärgerlich und schon lange offen. Ich bin gerade auf 1.0 umgestiegen und hatte gehofft, dieses Problem loszuwerden ...

@HarelM Ich kann dieses Problem weder auf Ihrer Website noch auf einer anderen Leaflet-Karte reproduzieren. Ich verwende regelmäßig Chrome, teste aber auch häufig in Firefox, IE11 und Edge. Ich vermute, dies hängt mit einigen Benutzereinstellungen oder der von Ihnen verwendeten Hardware zusammen.

Ich denke, Leaflet ist noch lange nicht im Sterben, aber das überlasse ich anderen. Trotzdem befinden wir uns größtenteils im Wartungsmodus: Bei den meisten Problemen handelt es sich tatsächlich um Supportanfragen, und bei den verbleibenden handelt es sich in der Regel um ziemlich spezifische Randfälle, in denen wir die Dinge noch ausbügeln müssen. Randfälle sind in der Regel auch zeitaufwändig und schwer zu finden / zu testen / zu beheben, wie dieses spezielle Problem. Bitte beachten Sie, dass von den derzeit aktiven Betreuern keiner von uns annähernd Vollzeit mit Leaflet arbeitet. Daher müssen Benutzer verstärkt und bei Problemen helfen, die für Sie wichtig sind.

Chrome unter Windows 10. Kein Problem bei der Wiedergabe.

@HarelM ok, ich vertraue dir in diesem

@HarelM In Windows 10-Einstellungen> Geräte> Maus und Touchpad> Wählen Sie aus, wie viele Zeilen jedes Mal

Ich helfe gerne weiter, habe aber keine Ahnung, wo ich anfangen soll. Das aktuelle Verhalten ist, dass die Karte bei jedem Bildlauf genau 3 Zoomstufen ändert. Wenn Sie mir eine Version mit Protokollspuren zur Verfügung stellen können, kann ich die Konsolenausgabe gerne zurückgeben.

Ich bin auf der Arbeit, ich werde, wenn ich nach Hause komme. Aber ich habe diese Einstellungen nicht geändert.

Wenn Sie mir eine Version mit Protokollspuren zur Verfügung stellen können, gebe ich die Konsolenausgabe gerne zurück.

So etwas hilft:

    L.DomEvent.on(map.getContainer(), 'wheel', function(ev) {
      console.log('Wheel event:', ev);
      console.log('Normalized wheel delta:', L.DomEvent.getWheelDelta(ev));
    });

Gebrauchsfertiges Beispiel unter http://playground-leaflet.rhcloud.com/sije/edit?html , Ausgabe. Für ein "klickendes" Mausrad (die üblichen mit diskreten Radschritten mit taktiler Rückkopplung) sollte das normalisierte Delta in Firefox 60 Pixel und in Chrom / Chrom 53 Pixel betragen.

Normalisiertes Raddreieck: 125
Ich habe einen 4k-Bildschirm, könnte auch mit diesem Problem zusammenhängen ...

WheelEvent:
bubbles:true
button:0
buttons:0
cancelBubble:false
cancelable:true
clientX:254
clientY:159
composed:true
ctrlKey:false
currentTarget:null
defaultPrevented:true
deltaMode:0
deltaX:-0
deltaY:-250
deltaZ:0
detail:0
eventPhase:0
fromElement:null
isTrusted:true
layerX:234
layerY:139
metaKey:false
movementX:0
movementY:0
offsetX:246
offsetY:151
pageX:254
pageY:159
path:Array(5)
relatedTarget:null
returnValue:false
screenX:1023
screenY:495
shiftKey:false
sourceCapabilities:InputDeviceCapabilities
srcElement:div#map.leaflet-container.leaflet-touch.leaflet-retina.leaflet-fade-anim.leaflet-grab.leaflet-touch-drag.leaflet-touch-zoom
target:div#map.leaflet-container.leaflet-touch.leaflet-retina.leaflet-fade-anim.leaflet-grab.leaflet-touch-drag.leaflet-touch-zoom
timeStamp:15211.830000000002
toElement:div#map.leaflet-container.leaflet-touch.leaflet-retina.leaflet-fade-anim.leaflet-grab.leaflet-touch-drag.leaflet-touch-zoom
type:"wheel"
view:Window
wheelDelta:300
wheelDeltaX:0
wheelDeltaY:300
which:1
x:254
y:159

@ HarelM danke für die Berichterstattung! In Bezug auf Ihren Kommentar zum 4k-Bildschirm scheint dieser Kommentar zutreffend zu sein: https://github.com/Leaflet/Leaflet/issues/4538#issuecomment -218094677

@IvanSanchez Wenn die Bildschirm-DPI den Wert beeinflusst, den wir erhalten, sollten wir bei der Normalisierung des Deltas vielleicht mit devicePixelRatio nachsehen? Ich habe mich bis jetzt aus dem Scrollrad-Geschäft herausgehalten. Bitte verzeihen Sie mir, wenn dies ein naiver Vorschlag ist.

Wenn sich die Bildschirm-DPI auf den Wert auswirkt, den wir erhalten, sollten wir bei der Normalisierung des Deltas möglicherweise mit devicePixelRatio nachsehen?

@perliedman Das machen wir, aber nur für Firefox. Dies ist das erste Mal, dass mir bekannt ist, dass DPI auf dem Bildschirm Chrome beeinflusst. Dies ist eines der Szenarien "Ich hasse die winzigen Unterschiede zwischen Browsern", also ist deine Naivität vergeben :-)

Ich habe einen 4k-Bildschirm, könnte auch mit diesem Problem zusammenhängen ...

@ HarelM Ja, das könnte es sein. Unter https://github.com/Leaflet/Leaflet/blob/master/src/dom/DomEvent.js#L234 wird nach Hi-dpi-Bildschirmen

Was ist Ihr Betriebssystem, Ihre genaue Chrome-Version, Ihr Bildschirm-PPI und der Wert von window.devicePixelRatio ?

window.devicePixelRatio : 2.5.
Chrome: 57.0.2987.133
Windows 10 Home.
laut hier: https://www.sven.de/dpi/
Anzeigegröße: 48,7 cm × 27,4 cm = 1334,28 cm² bei 200,26 PPI, 0,1268 mm Punktabstand, 40106 PPI²

Ich bin versucht, zusätzlich zum 2x-Faktor window.devicePixelRatio auf die Rad-Delta-Normalisierung anzuwenden. In diesem Fall würde der normalisierte 125px-Wert zu 50px werden, was vernünftig genug erscheint.

Ich habe keine Win10-Maschinen in der Nähe, daher möchte ich den Wert von window.devicePixelRatio und das Raddelta in einigen anderen Bildschirmen bestätigen - nämlich einem MS Surface-Hi-Dpi-Bildschirm und einem "klassischen" Bildschirm.

Ich habe 10 auf 3 Maschinen gewonnen, die ich überprüfen kann: 4k-Bildschirm, ein alter PC, den ich als Fernseher benutze, und ein kleiner Laptop.
Soll ich im Spielplatzcode angeben, was ich mit all dem oben Genannten bekomme?

@ HarelM Ja, ich denke das wäre hilfreich! Normalisiertes Raddelta und window.devicePixelRatio sollten ausreichen.

Ergebnisse für Chrome + Win 10 auf verschiedenen Maschinen:
Sie haben den 4K-Bildschirm in meinen ersten Kommentaren.
Der PC, den ich als Fernseher benutze, hat folgende Nummern:
Anzeigegröße: 48,7 cm × 27,4 cm = 1334,28 cm² (19,17 "× 10,79" = 206,81 Zoll²) bei 100,13 PPI, 0,2537 mm Punktabstand, 10026 PPI²
Normalisiertes Raddreieck: 75
window.devicePixelRatio: 1.5
Computer meiner Frau:
Anzeigegröße: 48,71 cm × 27,39 cm = 1333,94 cm² bei 71,23 PPI, 0,3566 mm Punktabstand, 5074 PPI²
Normalisiertes Raddreieck: 50
window.devicePixelRatio: 1
Ich glaube, das deckt die meisten Fälle ab.
Lassen Sie mich wissen, wann ich mit diesem Fix eine Veröffentlichung erwarten kann ...
Die Anzeigegröße ist wahrscheinlich falsch, da die Anzeigegrößen für die verschiedenen Maschinen unterschiedlich sind ...

@ HarelM Das sind sehr nützliche Infos! Ich denke, dass # 5480 das Problem beheben sollte.

Ich habe ein Beispiel mit den gleichen Änderungen unter http://playground-leaflet.rhcloud.com/bisa/edit?html , Ausgabe veröffentlicht.

Vielen Dank! Mach weiter so!

Das gleiche Verhalten tritt auch in L.version 0.7.7, Chrome Version 58.0.3029.110 (64-Bit) / Windows 10 auf.
@ IvanSanchez- Code unter http://playground-leaflet.rhcloud.com/vumof/edit?html , Ausgabe
`` `
var WheelPxFactor =
(L.Browser.win && L.Browser.chrome)? 2 * window.devicePixelRatio:
L.Browser.gecko? window.devicePixelRatio: 1;

L.DomEvent.getWheelDelta = function(e) {
return (L.Browser.edge) ? e.wheelDeltaY / 2 : // Don't trust window-geometry-based delta
       (e.deltaY && e.deltaMode === 0) ? -e.deltaY / wheelPxFactor : // Pixels
       (e.deltaY && e.deltaMode === 1) ? -e.deltaY * 20 : // Lines
       (e.deltaY && e.deltaMode === 2) ? -e.deltaY * 60 : // Pages
       (e.deltaX || e.deltaZ) ? 0 : // Skip horizontal/depth wheel events
       e.wheelDelta ? (e.wheelDeltaY || e.wheelDelta) / 2 : // Legacy IE pixels
       (e.detail && Math.abs(e.detail) < 32765) ? -e.detail * 20 : // Legacy Moz lines
       e.detail ? e.detail / -32765 * 60 : // Legacy Moz pages
       0;
}

before defining var map = L.map ('map', {}); `` `lässt die Karte sogar 4 Zoomstufen in Chrom springen.
Wird jemand so freundlich sein, einen Patch für eine frühere Version von Leaflet zu erstellen? Zumindest, um dem Benutzer der Broschüre vor dem Upgrade etwas Entwicklungszeit zu gewähren. Meine Karten-Apps verwenden eine Reihe von Plugins.

@ grid-100 Wir pflegen 0.7 nicht mehr aktiv. Erwarten Sie also nicht, dass jemand anderes diese Arbeit erledigt.

Wenn Ihnen Korrekturen für 0.7 wichtig sind, sollten Sie in Betracht ziehen, die Zeit dafür zu erhöhen.

Ich sehe dieses Problem auch in 1.5.1 unter Chrome und unter FF Windows 10. Mit Scroll-Sprüngen werden 2 Zoomstufen anstelle von 1 verwendet. Funktioniert unter Edge einwandfrei .
Beispiel https://jsfiddle.net/vd4f3oq9/

Ich hatte das Problem mit Win10 und Chrome. Vielleicht ist es veraltet,
aber ich fand eine einfache Lösung:

Gehen Sie zu den Mauseinstellungen der Windows-Systemsteuerung und reduzieren Sie die Zeilen, die um einen Schritt gescrollt werden, auf 5 oder weniger.

Das Problem ist in Leaflet 1.7.1, Chrome 86, Ubuntu 20.10 immer noch nicht behoben. Auf einem PC mit 4k-Monitoren liegt ein Problem vor, das möglicherweise mit dem Pixelverhältnis zusammenhängt. Ich habe eine Skalierung von 200% konfiguriert, aber window.devicePixelRatio scheint 1.75 .

Es funktioniert gut unter Firefox auf demselben PC. window.devicePixelRatio scheint 2 Firefox

Bearbeiten: Getestet und überprüft, dass es auch in Chrome defekt ist, wenn window.devicePixelRatio ist. Ich verwende Leaflet seit 1.5 und es ist seit dieser Version defekt.

Ich habe dieses Problem auch nach dem Upgrade auf 4k Monitor gefunden. FF ist OK, Chrome und Edge machen 2 Schritte. Debian Linux.

@perliedman bitte wieder öffnen. Oder sollte ich ein neues Problem melden?

@ Jeffreykog

Oder sollte ich ein neues Problem melden?

Auf jeden Fall sollten Sie ein separates Thema eröffnen, das den relevanten Kontext beschreibt.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen