Safari und Firefox sind immer noch in Ordnung.
@IvanSanchez jede Chance, die Beispiele zurĂŒck zu bekommen von:
https://github.com/Leaflet/Leaflet/issues/3575
cc: @perliedman @yohanboniface @mourner
Was sollen wir jetzt machen? Offene Ausgaben in Chromium und nur auf das Beste hoffen?
đ
Kann nur bestÀtigen, dass ich dies unter Windows mit Chrome 65.0.3325.181 reproduzieren kann.
Ich erinnere mich an das Setzen von L_DISABLE_3D
das alte Problem mit den KachelrÀndern zu beheben, aber dies scheint in dem oben verlinkten Beispiel keinen Unterschied zu machen.
Ich kann auf Chromium 65.0.3325.146 unter Linux reproduzieren.
Auf den ersten Blick scheint dies auf nicht ganzzahlige Offsets beim TrĂ€gheitsschwenken zurĂŒckzufĂŒhren zu sein.
Bei einem weiteren Update sehe ich immer noch eine Menge von translate3d
wenn ich die Karte im DOM inspiziere, selbst nachdem ich window.L_DISABLE_3D = true
, also ist dort vielleicht noch etwas anderes los.
Wie auch immer, ich wĂŒrde sagen, wir sollten dies dem Chrome-Team als Problem melden. IIRC, sie waren zumindest irgendwie hilfreich, als wir das letzte Mal gemacht haben, obwohl es das Problem am Ende nicht behoben hat.
Warten Sie, der TrÀgheitsversatz ist bereits aufgerundet. WTF?! :verwirrt:
Wenn der TrÀgheitsversatz aufgerundet ist, warum werden die translate3d
-Transformationen gebrochen?! :verwirrt:
@IvanSanchez komisch, aber zumindest sieht das so aus, als ob _we_ daran arbeiten kann!
Die aufgerundeten Anrufe werden nur einmal aufgerufen. Ich habe das Problem zurĂŒckverfolgt
Die Lösung wÀre, irgendwie eine Option an PosAnimation
zu ĂŒbergeben, um die Koordinaten auf jedem Animationsframe zu runden.
Rundungen sind nicht unbedingt eine ideale Lösung, da Sie auf einem Retina-Display tatsÀchlich doppelt so viele physische Pixel haben wie vom Browser gemeldet, sodass translate(0.5px)
tatsĂ€chlich eine visuelle und nĂŒtzliche Konsequenz fĂŒr die Retina hat.
Ich konnte einen minimalen Reproducer erstellen, ohne Leaflet.js zu verwenden. Es sieht also so aus, als wÀre es tatsÀchlich ein Fehler in Blink.
Ich habe ein Problem mit dem Chromium-Tracker geöffnet, damit wir es hoffentlich dort beheben können:
Wenn Sie möchten, dass dieser Fehler behoben wird, möchten sie, dass die Leute Probleme ansprechen, um dies widerzuspiegeln.
AuĂerdem denke ich, dass dieses Problem tatsĂ€chlich ĂŒber das Zoomen hinausgeht. Ich denke, es geht um jede Subpixel-Ăbersetzung.
Ich kann das konsequent reproduzieren:
1) Ăffnen Sie diese Demo: https://esri.github.io/esri-leaflet/examples/switching-basemaps.html
2) Schalten Sie die Grundkarte auf "Bilder", um den Kontrast zu erhöhen
3) Schwenken Sie die Karte nach Osten. Wenn Sie so fertig sind, dass die Pfanne keine ganze Zahl ist, sehen Sie graue Linien zwischen den Grundkarten.
Zur BerĂŒcksichtigung der RĂ€nder, obwohl ich sie beim Schwenken in Firefox 59.0.1 (U / min) nicht sehe, werden sie wĂ€hrend der Animation bei jedem Zoomvorgang angezeigt.
@Widdershin Hallo, fĂŒr die Netzhaut werden die physischen Pixel zu CSS-Pixeln berechnet und als solche behandelt. Warum sollten Sie also die tatsĂ€chlichen physischen Pixel fĂŒr das Layout berĂŒcksichtigen? Ich denke das ist irrelevant. Wenn translate(0.5px)
einen visuellen Effekt fĂŒr Sie haben, liegt es nicht daran, dass es von der Layout-Engine gerundet wurde, um als 1 CSS-Pixel angezeigt zu werden? https://www.w3.org/TR/css3-values/#absolute -lengths
@Widdershin Zoom ist hier nur wichtig, weil es fĂŒr fraktionierte
Hallo allerseits, ich habe auch den Chrome-Fehler kommentiert ( @Widdershin, danke fĂŒr die Meldung). Das Chromium-Team scheint an einer Lösung interessiert zu sein und fragt, welche Version ihn eingefĂŒhrt hat. Können Sie dabei helfen? Ich kann keine alten Versionen von Chrome unter macOS installieren, und in einer virtuellen Parallels-Maschine ist das Problem nicht vorhanden.
Wenn Sie ein anderes Betriebssystem verwenden, können Sie möglicherweise tragbares Chrome oder Ă€hnliches ausprobieren, um herauszufinden, welche Version es eingefĂŒhrt hat. Können Sie helfen, dies herauszufinden?
@ Hyperknot
Hallo, tut mir leid, ich kenne die erste Version nicht. Ich habe Chromium 61.0.3163.100-1.fc27 heruntergestuft und ĂŒberprĂŒft. Die RĂ€nder werden auch dort angezeigt. Wenn ich schnell schwenke und die Maustaste loslasse, werden sie angezeigt, bis die Animation beendet ist.
Zur BerĂŒcksichtigung der RĂ€nder, obwohl ich sie beim Schwenken in Firefox 59.0.1 (U / min) nicht sehe, werden sie wĂ€hrend der Animation bei jedem Zoomvorgang angezeigt.
Klingt so, als ob sich der Zoom-Fehler tatsĂ€chlich von dem Pan-Fehler unterscheidet, den ich dem Chrom-Team gemeldet habe. Tut mir leid, dass ich dieses Problem ĂŒbernommen habe!
Zugehöriges / mögliches Duplikat von # 3575.
Siehe auch das Chromium-Problem, das als Ergebnis dieses Problems aufgetreten ist.
https://bugs.chromium.org/p/chromium/issues/detail?id=600120
Mhh, sie haben die PrioritÀt im Juli erhöht ... hoffen wir.
Leider ist die PrioritÀt umso höher, je niedriger die Zahl ist.
https://bugs.chromium.org/p/chromium/fields/detail?field=Pri
Was am frustrierendsten ist: Sie sehen diese Gitterlinien in Chrome sogar zusammen mit Google Maps, und niemand scheint davon betroffen zu sein. Verwenden Sie einfach eine Skalierung> 100% fĂŒr den Windows-Desktop oder den Browser und öffnen Sie sie
https://www.google.de/maps/@54.3061614 , 2.0559393,5z
Vielleicht sind wir einfach zu pedantisch, aber ein dunkles Thema macht Leaflet mit Chrome fast unbrauchbar. Wechseln Sie hier zur Basiskarte 'blackmarble'
https://ptv-logistics.github.io/xserverjs/boilerplate/Leaflet.1.0.html
Dieses Problem tritt ĂŒbrigens bei LL0.7 nicht auf
https://ptv-logistics.github.io/xserverjs/boilerplate/Leaflet.0.7.html
Nach Jahren des Leidens unter diesem Problem sehe ich die einzigen Optionen:
.leaflet-container {
background: #000;
}
Ich kann bestĂ€tigen, dass das Beispiel von @oliverheilig richtig ist. Die 1px-Zeilen erscheinen nur in der Version 1.0, nicht in Version 0.7. Es scheint also einen Weg zu geben, diese Seite zu lösen. Wenn jemand die Energie hat, herauszufinden, warum Chrome die 1px-Zeilen in 1.0 und nicht in 0.7 einfĂŒhrt, kann dies möglicherweise eine Korrektur ermöglichen.
Das neueste Update fĂŒr dieses Chrome-Problem bestĂ€tigt, dass nicht beabsichtigt ist, das Problem bald zu beheben.
Wenn jemand dies beheben möchte, wĂŒrde ich empfehlen, ein git bisect
manuell auszufĂŒhren, um das Problem zu finden.
Ich habe den Code von 0.7 und 1.x verglichen. FĂŒr mich sieht es so aus, als ob 1.x verschachtelte CSS-Transformationen verwendet, die Chrome nicht richtig verarbeitet. Ich denke, dies wurde mit dem Bruchzoom in LL eingefĂŒhrt. Ich befĂŒrchte, dies kann nur durch ein vollstĂ€ndiges Umschreiben der Fliesenstiche mit Leinwand behoben werden, wie dies bei OL der Fall ist:
https://ptv-logistics.github.io/xserverjs/boilerplate/OpenLayers3.html
Es gibt bereits ein Plugin fĂŒr das ZusammenfĂŒgen von Kacheln auf Leinwand: https://github.com/Leaflet/Leaflet.TileLayer.NoGap (möglicherweise aktualisiert oder nicht, um mit der neuesten BroschĂŒre zu funktionieren, aber es hat irgendwann funktioniert).
Jetzt haben wir diese "Erfahrung" auch auf Firefox (62.0.2) super! Derzeit sind die einzigen fehlerfreien Browser IE und Edge!
Gross, wurden hier Fortschritte erzielt, und / oder gibt es eine Problemumgehung, die der akzeptierte Ansatz ist, den die Menschen verwenden?
Sieht so aus, als mĂŒssten wir alle damit leben. Und auch der neue chrombasierte Edge wird dieses Problem erben.
Von cmulders "hack" ist hier eine gute Problemumgehung, um die Kacheln 1 Pixel gröĂer zu machen, mit dem Nebeneffekt, dass sie sich um 1 px ĂŒberlappen. AuĂerdem werden die Kacheln leicht vergröĂert und skaliert (um 1 Pixel).
/*
* Workaround for 1px lines appearing in some browsers due to fractional transforms
* and resulting anti-aliasing.
* https://github.com/Leaflet/Leaflet/issues/3575
*/
(function(){
var originalInitTile = L.GridLayer.prototype._initTile
L.GridLayer.include({
_initTile: function (tile) {
originalInitTile.call(this, tile);
var tileSize = this.getTileSize();
tile.style.width = tileSize.x + 1 + 'px';
tile.style.height = tileSize.y + 1 + 'px';
}
});
})()
Ich möchte nur sagen, dass die obige Funktion von Oijkn funktioniert. Ich habe es gerade kopiert und in meinen Code eingefĂŒgt und die weiĂen Gitterlinien sind verschwunden. Danke Oijkn!
Das Update funktioniert auch bei mir. Danke @oijkn! Ich möchte jedoch ĂŒber dieses Problem auf dem Laufenden bleiben, falls es in einer zukĂŒnftigen Version von Leaflet behoben wird, damit ich diesen Hack loswerden kann.
Ich kann dieses Problem unter Debian Linux, XFCE, nach dem Upgrade auf den HDPI-Monitor (4k 32 ") reproduzieren. Reproduzierbar in Chrome, nicht in FF. Seite nicht skaliert.
Beispiel: https://www.freemap.sk/?map=15/48.687986/20.446608 & layer = Z.
Linien sind beim Verschieben der Karte stabil und haben beim Skalieren der Seite ihre Breite geÀndert.
Hilfreichster Kommentar
Von cmulders "hack" ist hier eine gute Problemumgehung, um die Kacheln 1 Pixel gröĂer zu machen, mit dem Nebeneffekt, dass sie sich um 1 px ĂŒberlappen. AuĂerdem werden die Kacheln leicht vergröĂert und skaliert (um 1 Pixel).