ã¹ã¯ãªãŒã³ã·ã§ããã瀺ãããã«ãã¿ã€ã«ã®éã«å°ããªã¹ããŒã¹ããããŸãã ããã¯ãSafariãChromeãOperaã®å°æ°ãºãŒã ã¬ãã«ã§çºçããŸãã ããã¯ïŒ2377ã§ä¿®æ£ãããããã§ãããããã©ãŒãã³ã¹ãåäžãããããã«3ccbe5bã§åŸã§åé€ãããŸããã
ããã©ãŒãã³ã¹ãžã®åœ±é¿ãèªåã§ç¢ºèªããããã«ä¿®æ£ãåå®è£ ããããšããŸããããããã¯ããªãã²ã©ããããã«Chromeã®åé¡ãä¿®æ£ãããŸããã§ããã
誰ãããããã©ã®ããã«ä¿®æ£ã§ãããèããŠããŸããïŒ åæ°ãºãŒã ã¬ãã«ã¯ã¢ããªã«ãšã£ãŠåªããæ©èœã§ããããã®ãã°ãæ®ã£ãŠããéããå®éã«äœ¿çšããããšã¯ã§ããŸããã
ç·šéïŒåé¡ã瀺ãjsFiddleãèšå®ããŸããïŒ http ïŒ//jsfiddle.net/Eschon/pw9jcjus/1/
ããããªãã :(åé¡ã¯Safariã§ããèŠãããŸããã§ããããâ Chrome / Operaã¯æ£åžžã«æ©èœããŸããã
誰ãããããã©ã®ããã«ä¿®æ£ã§ãããèããŠããŸããïŒ
ç§ã«ã¯ã¢ã€ãã¢ããããŸãããããã¯ãã©ãžã«ã«ããšãå®éšçããšããèšèã«ãªã³ã¯ãããŠããŸãã
https://github.com/IvanSanchez/Leaflet.gl
ç§ãçºèŠããããšã®1ã€ã¯ããã¯ã¹ãã£ãã¯ã©ã³ãããå¿ èŠããããšããããšã§ãã ã€ãŸãããã®è¡ãåé€ãããå ŽåïŒ https ïŒ
ä»ã®ãšãããã¿ã€ã«ã¬ã€ã€ãŒã®äžè§åœ¢ã¯ã¹ã©ã€ããŒãªãã§ã¬ã³ããªã³ã°ãããå®å šãªã¡ãã·ã¥ã圢æããŠããŸã...ãããããå®éšçããšããèšèã¯åœåã®éãã®ãã¹ãŠã«ãªããŸãã
@mourner Safariã§ãã匷åãªå¹æããããŸãããChromeã§ã衚瀺ãããŸãã
@IvanSanchezãã°ãããä»äºã§ãããïŒãŸã ïŒããã䜿çšã§ãããšã¯æããŸããã
@EschonãããRetinaç»é¢ã§ã¯ããã«ç®ç«ããªãã®ã§ãããããæ°ã¥ããªãã£ãã§ãããã
å€ãã®ãããã³ã°ãªãã§ããã1.0ã§å¯èœã«ãªããšã¯æããŸããã ããã¯ãã°ã®äžçªäžã«ããã·ã¥ããŸãã
ææ°ã®Chromeã§ãåãåé¡ãçºçããŸãã OpenStreetãããã¯ãããã®ç·ã§ããŸã衚瀺ãããªãã®ã§ãå¯èœãªä¿®æ£ãèŠã€ããŠãã ããã ããããšãã
ç¹ã«æãå°å³ãç»åïŒç§ã®å ŽåïŒã§ã¯ããã®åé¡ã¯éåžžã«é¡èã§ãã Ivanãè¿°ã¹ãããã«ããã©ãŠã¶ã§ã®ã¢ã³ããšã€ãªã¢ã¹ã«ããããºãŒã äžã®_fractional_å€æãåå ã§ã¿ã€ã«éã«ã¹ããŒã¹ãçãããšæããŸãã
ããè¯ã解決çãå©çšå¯èœã«ãªããŸã§ããã®åé¿çïŒãŸãã¯ããã¯ïŒã䜿çšããŠã¿ã€ã«ã1ãã¯ã»ã«å€§ããããå¯äœçšãšããŠ1ãã¯ã»ã«éãªãããã«ããŸãã ããã«å ããŠãã¿ã€ã«ã¯ãããã«æ¡å€§ããã³æ¡å€§çž®å°ãããŸãïŒ1pxïŒã
/*
* 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';
}
});
})()
@cmuldersåé¿çãããããšãïŒ
ç§ãã¡ã¯äž»ã«çœãšéã®ã¹ããŒãªãŸãŒãã®å°å³ãæã£ãŠããã®ã§ã ä»ã®ãšããã¹ããŒã¹ã¯ç¡èŠããŸãããåé¿çã䜿çšãããšãèŠãç®ãã¯ããã«è¯ããªããŸãã
cartodbã®æãã¿ã€ã«ã§jsbinãäœæãããšã網èç»é¢ã§ãç·ã衚瀺ãããŸãã
http://jsbin.com/ratoli/5/edit?htmlãjsãoutput
Safari / Chromeã®ãã®ãŒãFFOKã§ãã
ããã«ã€ããŠã¯ããªãŒãã¬ãããªãã®Chromeãã°ã¬ããŒããäœæããå¿ èŠããããããå°æ¥ã®ChromeããŒãžã§ã³ã§ä¿®æ£ãããŸãã
@hyperknot Chromeã®ãã°ã¬ããŒãã¯ãã§ã«ãããšæããŸãããä»ã¯èŠã€ãããŸããã
ç§ã¯leafletjs1.0ããŒã¿çã䜿çšããŠããŸãããosx El Capitanã®ïŒææ°ïŒchromeãsafariãfirefoxïŒã§ããã®ãã°ãçºçããããšããããŸãã ç»åã® transform
cssããããã£ã1pxç·šéãããšãç·šéãããã¿ã€ã«ã¯ãã®é£ã®ã¿ã€ã«ãšæŽåããŸãã
// ex.
transform: translate3d(1556px, -81px, 0px);
// to
transform: translate3d(1555px, -80px, 0px);
ãã ãããã®ãã°ã衚瀺ãããªãå ŽåããããŸãïŒ1pxã®éãïŒ!! çç±ã¯ããããŸãã:(ããããçŸåšããããã³ã³ããã®ã¹ã¿ã€ã«ã«é¢ä¿ããŠãããšæããŸãã
ç·šéïŒã¿ã€ã«ãã¬ã³ããªã³ã°æã«æ£ããæŽåãã1pxã®éãã衚瀺ãããªããšãããšãããã移åã€ãã³ãã§ã®ã£ããã衚瀺ãããŸãã åäœã¯ãã¿ã€ã«ã®åšãã®1pxã®å¢çç·ã®ãã©ãã·ã¥ã®ãããªãã®ã§ãã
OS X ElCapitanã®Safari9.1ã§ãåé¡ã解決ããcssã®åé¿çãèŠã€ããŸããã
.leaflet-tile-container img {
box-shadow: 0 0 1px rgba(0, 0, 0, 0.05);
}
ç§ã¯ããŸãä¿¡çšã§ããŸããããããã圹ç«ã€_çç±_ã瀺åãã次ã®Stackoverflowã®åçãããããåããŸããïŒ http ïŒ//stackoverflow.com/a/17822836/138103
ããã¯ã¹ã·ã£ããŠã䜿çšãããšãåé¡ãããçŽæ¥çã«è§£æ±ºãããŸããããã¯ã¹ã®åæç»å¯žæ³ãæ¡åŒµãããWebKitã«äœåãªãã¯ã»ã«ã®åæç»ã匷å¶ãããŸãã ã¢ãã€ã«ãã©ãŠã¶ã§ã®ããã¯ã¹ã·ã£ããŠã®æ¢ç¥ã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ã¯ã䜿çšããããã©ãŒååŸã«çŽæ¥é¢ä¿ããŠããããã1ãã¯ã»ã«ã®ã·ã£ããŠã¯ã»ãšãã©ãŸãã¯ãŸã£ããå¹æããªãã¯ãã§ãã
ããããããã¯é©åãªä¿®æ£ãšããŠäœ¿çšã§ããŸãããä»ã®äººãæåã«ãããè©Šããæ¹ãããã§ãããã ããããããã¯ç§ã«ãšã£ãŠã¯ããŸããããä»ã®ãã©ãŠã¶ã§ã¯åé¡ãåŒãèµ·ãããªãããã§ãã
@hrefãã¶ãããã®ä¿®æ£ã§ãã«ãªã¯ãšã¹ããè¡ãããšãã§ããŸããïŒ ããã«ããããã¹ããç°¡åã«ãªããŸãã
@href @IvanSanchezãããã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ã«åœ±é¿ããªããšç¢ºä¿¡ããŠããŸããïŒ ã¢ã«ãã¡äžéæ床ã®ããã¯ã¹ã·ã£ããŠãè¿œå ãããšãã¢ãã€ã«ããã€ã¹ã«ã©ã®ããã«åœ±é¿ãããããããã¡ã€ã«ããå¿ èŠããããšæããŸããããšãã°ãããã©ãŒãã³ã¹ã«ç®ã«èŠãã圱é¿ãäžããããããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãç¡å¹ã«ãããããå¯èœæ§ããããŸãã
@IvanSanchezãå®äºããŸããã
ãããã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããªãããšã確èªããŸããïŒ ããšãã°ãã¢ã«ãã¡äžéæ床ã®ããã¯ã¹ã·ã£ããŠãè¿œå ãããšãã¢ãã€ã«ããã€ã¹ã«ã©ã®ããã«åœ±é¿ãããããããã¡ã€ã«ããå¿ èŠããããšæããŸããããšãã°ãããã©ãŒãã³ã¹ã«ç®ã«èŠãã圱é¿ãäžãããããã³ã®ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãç¡å¹ã«ãããããå¯èœæ§ããããŸãã
ãããã©ã®ãããªåœ±é¿ãäžããã®ãããŸã£ããããããŸããã Stackoverflowã®åçãããããã¯å¹æããªãããã§ãããæ¥ç·æ¹åã«é¢é£ããåé¡ã«é¢ããä»ã®èª°ãã®æèŠãä¿¡é ŒããŠããã ãã§ãã ãã£ãšç¥èã®ãã人ãããã調ã¹ãŠç§ã®åé¿çã玹ä»ã§ããã°ããã£ãšçŽ æŽãããã¢ã€ãã¢ã§ãããã
ã°ãŒã°ã«ã§æ€çŽ¢ããŠã©ãããŒã«ãªããä»ã®äººã«ç¥ã£ãŠãããããã£ãã
@hyperknot @hrefæ°é±é以å ã«ããã¹ããã©ãŠã¶ã®ã»ããã«å¯ŸããŠããã€ãã®ãã³ãããŒã¯ãå®è¡ããŸãã
@IvanSanchez @hrefãŸãããã®ãããã³ã°ããã°ããŒãã«ã«é©çšããã ãã§ãªãã圱é¿ãåãããã©ãŠã¶ã®ã¿ã«å¶éããããšããå§ãããŸãã
@IvanSanchezãªãŒãã¬ããã®ã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ããããã¡ã€ãªã³ã°ããããã®æšå¥šã¯ãŒã¯ãããŒã¯ãããŸããïŒ
ãŸãããã®ãããã³ã°ãã°ããŒãã«ã«é©çšããã ãã§ãªãã圱é¿ãåãããã©ãŠã¶ã®ã¿ã«éå®ããããšããå§ãããŸãã
å人çã«ã¯Safariã§ããèŠãªãã®ã§ããµãã¡ãªã«éå®ããã®ãçã«ããªã£ãŠããŸãã ããããChromeã§ãããèŠãŠãã人ã ã®èšåããããŸããã 誰ããä»ã®Webkitãã©ãŠã¶ã§ãã®ãã°ããŸã èŠãŠããŸããïŒ
L.Map
ã³ã³ã¹ãã©ã¯ã¿ãŒã§ãéžæãããã©ãŠã¶ãŒã®ã¿ã®CSSã¯ã©ã¹ããããã«è¿œå ããã®ã¯éåžžã«ç°¡åã§ãã
@hrefãã®åé¡ã¯ç§ã®Chromium49ã«ãããŸã
@hyperknotç§ã¯ãããã®çš®é¡ã®ãã®ã
@hrefãŸãããã®ä¿®æ£ã«ãããChromium49ã®ã¿ã€ã«ã.leaflet-container { background: black }
ïŒ
img.leaflet-tile.leaflet-tile-loaded { box-shadow: 0 0 1px rgba(0, 0, 0, 0.05); }
ïŒ
ïŒcrying_cat_faceïŒ
ããã¯å€ã ã ãã®åé¡ã¯ãChromium 49ïŒOS X El CapitanïŒã«ã¯ååšããŸããããŸããããã¯ã¹ã·ã£ããŠã¯ã©ã¡ãã®æ¹æ³ã§ã圱é¿ãäžããªãããã§ãã
ææ°ã®éã³å ŽãäœæããŸããïŒ http ïŒ
ãªãŒãã¬ããã®ãªããã°ãWebkitããŒã ãšBlinkããŒã ã«æåºããŸãã
OKãåé¡ãåçŸããæå°éã®ãªãŒãã¬ãããªãã®äŸãäœæããããšã«æåããŸããã
http://playground-leaflet.rhcloud.com/say/1/edit?htmlãoutput
æåºãããChromiumãã°ã¬ããŒãïŒ https ïŒ
æåºãããWebkitãã°ïŒ https ïŒ
img-lessããŒãžã§ã³ïŒ http ïŒ
[email protected]ããã®Chromiumãã°ã¬ããŒãããã®
ã¡ãã£ãšããªããã¡ã«ç°¡åãªæŽæ°ãæäŸãããã ãã§ãã ç§ã¯ãã®åé¡ã«ç©æ¥µçã«åãçµãã§ããŸãã
åé¡ã¯ãèŠçŽ ã®ããŒã«ã«ç©ºéã§ç©äºãã©ã¹ã¿ãŒããããšãåå ã§ããã èŠçŽ ã«åæ°å€æãããå Žåãã©ã¹ã¿ã©ã€ãºããããã¯ã¹ãã£ã¯ãç·åœ¢ãªãµã³ããªã³ã°ã䜿çšããåæ°å€æã§ç»é¢ã«è²Œãä»ããããçµæãšããŠãŒãããŸãã
解決çã¯ãç©çç»é¢ã«ãã¯ã»ã«æŽåããã空éã§ç©äºãã©ã¹ã¿ãŒåããããšã§ãã ã€ãŸããã©ã¹ã¿ãŒãã¯ã¹ãã£ã®ä»£ããã«ãåæ°å€æããã¯ã¿ãŒã°ã©ãã£ãã¯ã¹ã³ãã³ãã«é©çšããŸãã
ä¿®æ£ã¯2ã€ã®éšåã§è¡ãããŸãã
- ã©ã¹ã¿ãŒã·ã¹ãã ãä»»æã®äžè¬çãªè¡åã§ã©ã¹ã¿ãŒã§ããããã«ããæåã®éšåã ãã®éšåã¯ã»ãŒå®äºããŠããŸãã WIPã䜿çšããŠããŸãããããã©ãŒãã³ã¹ã®äœäžãåŒãèµ·ãããã°ããŸã ãããŸãã æ°æ¥ã§å®æããäºå®ã§ãã
https://codereview.chromium.org/2075873002/- ã¿ã€ãªã³ã°ç®¡çã§ãããŸããŸãªã©ã¹ã¿ãŒå€æã«ä»å±ããäžé£ã®ãã¯ã¹ãã£ã管çã§ããããã«ãã2çªç®ã®éšåã ç§ã¯ããšããšäžè¬çãªãããªãã¯ã¹ã䜿çšããŠããŸããããã¿ã€ã«ã«ãã¬ããžã®èšç®ãéåžžã«å°é£ã«ãªãããšãããããŸããã 代ããã«ãå€æãšã¹ã±ãŒãªã³ã°ã®ã¿ããµããŒãããããåçŽãªããŒãžã§ã³ãå®è¡ããŸãã ããã«ã¯ãã1é±éã®äœæ¥ãå¿ èŠã«ãªããšæããŸãã
M53ãã©ã³ãã§çéžããããšæããŸãããæéããã€ãã§ãã ããã¯M54ã§ä¿®æ£ã§ããããšã¯ééããããŸããã
https://bugs.chromium.org/p/chromium/issues/detail?id=600120
ãã°ã¬ããŒã¿ãŒãžïŒ
ã¢ããããŒããããã¹ãã±ãŒã¹ã¯ããã¯ã»ã«ã¹ããããå¥ã®æ¹æ³ã§åŠçããChromiumã®ãšããžã±ãŒã¹ãããªã¬ãŒããŸããã ã¿ã€ã«ã«ã³ã³ãã³ããè¿œå ãããšãèæ¯ã«ç¶ãç®ã衚瀺ãããªããªããŸãã ãšããžã±ãŒã¹ã¯ç°¡åã«ä¿®æ£ã§ããŸãããã¿ã€ã«ã®å 容ã«ç¶ãç®ãæ®ã£ãŠããå¯èœæ§ããããŸãã
ããã¯é£ããåé¡ã§ãããå¯äžç¥ãããŠããå®ç§ãªè§£æ±ºçã¯FSAAã䜿çšããããšã§ããããã¯ãCPU /ã¡ã¢ãªã®ã³ã¹ãã®ããã«ãã©ãŠã¶ã§ã¯äœ¿çšã§ããŸããã ãã¹ãŠã®ãã³ããŒã¯ãäžéšã®ã³ã³ãã³ããæ£ããèŠããªããšããç ç²ãæã£ãŠãäžéšã®ã³ã³ãã³ããããèŠæ ãããããããã«ç¬èªã®ãã¥ãŒãªã¹ãã£ãã¯ãéçºããŠããŸãã
äŸïŒ http ïŒ
Chromeã¯æ£ãããžãªã¡ããªã§æç»ããŸããããšããžã¯è©°ãŸã£ãè±ã®ããã«ã«ãã¿ãŸãã
Firefoxã¯ãæåã®ããã¯ã¹ã49x49ãšããŠæç»ãã2çªç®ã®ããã¯ã¹ã49x50ãšããŠæç»ããŸãã
Edgeã¯ãæåã®ããã¯ã¹ã50x50ãšããŠæç»ãã2çªç®ã®ããã¯ã¹ã50x49ãšããŠæç»ããŸãã äž¡æ¹ãšããšã€ãªã¢ã·ã³ã°ããããŸããã³ã³ããã«å転ãè¿œå ãããšããã¹ãŠã®å®è£ ããšããžãããªãŒãããŸãã
ç§ãæšå¥šããåé¿çã¯ãã¿ã€ã«éã«ãªãŒããŒã©ãããè¿œå ããããšã§ãã A4ã®çŽã§ãã¹ã¿ãŒãäœãã®ãšåãã§ãã ã¢ã€ãã¢ã¯ããã¹ãŠã®ã¹ã±ãŒãªã³ã°åŸã«åã¿ã€ã«ãå°ãªããšã1ãã¯ã»ã«ããªãŒããŒãããŒããããšã確èªããããšã§ããããã«ãããåç©çãã¯ã»ã«ãå°ãªããšã1ã€ã®äžéæãã¯ã»ã«ã§èŠãããããšãä¿èšŒãããŸãã éãªãã®å¹ ã¯ããµããŒãããæå°ã®ã¹ã±ãŒã«ã«ãã£ãŠç°ãªããŸãã ããšãã°ã1/4ãµã€ãºãŸã§ãµããŒãããå Žåã¯ã4ãã¯ã»ã«ã®ãªãŒããŒã©ãããè¿œå ããŸãã
以äžã¯ãããã«åãçµã¿ããä»ã®éçºè ã®ããã®è©³çŽ°ãªåæã§ãã
ã¬ããŒã¿ãŒã«ãã£ãŠã¢ããããŒããããåçŸã¯ãccã§æé©åãããã³ãŒããã¹ãããªã¬ãŒãããããããŸãè¯ãåçŸã§ã¯ãããŸããã§ããã ã¬ã€ã€ãŒãå®å šã«åè²ã§ããããšãæ€åºããããšãã³ã³ãã³ãã¹ã±ãŒã«ã®æŠå¿µãæããªãSolidColorLayerImplãšããŠæç»ããŸãã ãããç°¡ç¥åãããåçŸã§ãïŒ http ïŒ
ãã©ãã¯ããã¯ã¹ã¯ããµã€ãºïŒ100ã100ïŒã®SolidColorLayerImplãšããŠæç»ããããµã€ãºïŒ100ã100ïŒã®åäžã®åè²ã¯ã¯ãããçæããŸããããã¯æç»å€æã«ãã£ãŠç»é¢ã«æ圱ãããŠïŒ99.5ã99.5ïŒã«ãªããŸãã ã¢ã³ããšã€ãªã¢ã¹ã䜿çšãããšããã¯ã»ã«ã®å³ç«¯ã®åãšäžçªäžã®è¡ãåéæã§æç»ãããŸãã
äžæ¹ãã¬ã€ã€ãŒã«äœããè¿œå ããŠccãã ãŸããã¬ã€ã€ãŒãåè²ã§ã¯ãªããšæãããå Žåãåé¡ã¯2ã€ã®å Žåã«çºçããŸãã
- æåŸã®ã¿ã€ã«ã¯åè²ã§ããäŸïŒ http ïŒ
å 容ã®ãµã€ãºã¯åãäžãããããããã¹ã±ãŒãªã³ã°ãããã¬ã€ã€ãŒãµã€ãºã¯ïŒ600ã300ïŒ* 0.995 =ïŒ597ã298.5ïŒã®ã¿ã§ãããïŒ597ã299ïŒãšããŠäžæžããããŸãã
- ãªã¹ãã¿ã€ã«ãåè²ã§ã¯ãªãå ŽåãäŸïŒ http ïŒ
å 容ã®ãµã€ãºã¯åãäžããããŸãã ããã§ããå®éã®ã¹ã±ãŒãªã³ã°ãããã³ã³ãã³ãã¯ïŒ600ã300ïŒ* 0.995 =ïŒ597ã298.5ïŒã®ã¿ãã«ããŒããçæãããã¯ã¯ããã¯ïŒ597,299ïŒãã«ããŒããŸãã ãã¯ã»ã«ã®æåŸã®è¡ã¯ãã¢ã³ããšã€ãªã¢ã¹ã®ããã«åéæã§ãããšæ³å®ãããŠããŸãããå®éã«ã¯ãã¬ã€ã€ãŒãäœæããèŠçŽ ã®èæ¯è²ã§ããã¬ã€ã€ãŒã®èæ¯è²ã§å¡ãã€ã¶ããŠããŸãã
èæ¯ã«ç¶ãç®ã¯ãããŸããããã³ã³ãã³ãããããèŠãããšã«ãªã£ãŠãããšãã«ãèæ¯ããšããžã§ã«ããå¯èœæ§ããããŸãã äŸïŒ http ïŒ
éåè²ã¿ã€ã«ã䜿çšããä»ã®ãã¹ãã±ãŒã¹ïŒ
http://playground-leaflet.rhcloud.com/giqo/edit?output
@hyperknotã®çŽ æŽãããã¢ããããŒãã§ãããããã2ã€ã®åŒçšç¬Šã¯äºãã«ççŸããŠããããã§ãïŒ1ã€ã¯ä¿®æ£ã«åãçµãã§ãããšèšãã次ã®åŒçšã¯é©åãªä¿®æ£ãäžå¯èœã ãšèšã£ãŠããŸãïŒã ããã§ãç§ãã¡ã¯ä¿®æ£ãåŸ ã€ã®ã§ããããããããšããããæ°žé ã«ãã®ããã«ãªãããšãåãå ¥ããã®ã§ããããïŒ
@mournerç³ãèš³ãããŸããããå®å
šãªã³ã³ããã¹ãã¯å«ãŸããŠããŸããããã¡ããããã®éãã§ãã ãããã£ãŠãå
ã®ãã°ã¬ããŒãã¯æ¬¡ã®ãšããã§ãã
https://bugs.chromium.org/p/chromium/issues/detail?id=600120
ããæç¹ã§ãããã¯å¥ã®åé¡ã«çµ±åãããŸããïŒ
https://bugs.chromium.org/p/chromium/issues/detail?id=521364
ãã®å¥ã®åé¡ã§ã¯ã解決çãå«ãå ã®é·ãè¿ä¿¡ãåãåããŸããã ç§ã¯åœŒããªãŒãã¬ããã®ã±ãŒã¹ã圌ã®ä»äºã«ãã£ãŠæ¬åœã«ä¿®æ£ãããŠãããã©ããã確èªã§ãããã©ããå°ããŸããããããŠåœŒã¯çããŸããïŒ
ãªãŒãã¬ããã®åé¡ã¯å®éã«ã¯å¥ã®åé¡ã§ãããšç³ãèš³ãããŸããã 600120å·ãå床éããåæãå ±æããŸãã
ãã®ãããLeafletãã°ãåéãããLeafletãã°1ã§2çªç®ã®å¿çãè¿ãããŸããã ãšããã§ãçŸåšã®ææ°ã®ã¢ããããŒãã¯æ¬¡ã®ãšããã§ãã
ç§ã¯ã¢ãã€ã«ã°ãŒã°ã«ããããèŠãŠã圌ãããããã©ã®ããã«æ±ã£ãããèŠãŸããã 圌ãããã®åé¡ã«æ©ãŸãããŠããããšãããããŸãããã圌ãã¯ãããç®ç«ããªãããããã«ããã€ãã®UIããªãã¯ãè¡ããŸããã
ãŸãããã¥ãŒããŒãã¿ã°ã䜿çšããŠãã©ãŠã¶ã®ãã³ããºãŒã ãçŠæ¢ããJSã«ãã³ããºãŒã ãå®è£ ããŸããã ãã³ããºãŒã äžããã¿ã€ã«éã®ç¶ãç®ã確èªã§ããŸãïŒé«è§£å床ãã£ã¹ãã¬ã€ã§ã¯éåžžã«åŸ®åŠã§ãïŒã ãºãŒã ãžã§ã¹ãã£ãçµäºãããšãã¹ã±ãŒã«ä¿æ°ãæãè¿ãã¿ã€ã«ã»ããã«ã¹ãããããŸãã ãããã£ãŠãåºæ¬çã«ã¿ã€ã«ã¯ããºãŒã ãžã§ã¹ãã£äžãé€ããŠãåžžã«ãã€ãã£ã解å床ã§è¡šç€ºãããŸãã
æ£çŽãªãšããããŸã ãã£ããããèšç»ã¯ãããŸããã æææ¥ã«ä»ã®çµµã®å ·ã®äººãã¡ãšè©±ãåãã€ããã§ãã
ãšããã§ãã¢ãã€ã«ã°ãŒã°ã«ãããïŒç§ã¯ãŠã§ããµã€ãã®ãã®ã ãšæããŸãïŒã¯ç§ãã¡ãšãŸã£ããåãæè¡ã䜿çšããŠããããã§ãã
@mourner @IvanSanchez will-changeã䜿çšããå¯èœãªè§£æ±ºçã
https://bugs.chromium.org/p/chromium/issues/detail?id=600120#c15
çŸåšã®éå±€åã¯éèŠã§ããïŒ åã¿ã€ã«ãç¬èªã®ã¬ã€ã€ãŒïŒtranslate3dïŒã«åŒ·å¶ããããããã®ã¬ã€ã€ãŒã¯ç¬ç«ããŠå°æ°å€ã§ã¹ã±ãŒãªã³ã°ãããŠããããšãããããŸãã
åãããã¿ã€ã«ãåå¥ã«ïŒã¬ã€ã€ãŒã䜿çšããããdrawImageRect +ãã©ã¯ã·ã§ãã«CTMãä»ããŠïŒã¹ã±ãŒãªã³ã°ããéãããã©ã¯ã·ã§ãã«ã¹ã±ãŒã«å€ã®å Žåããã¯ã»ã«æŽåãããŠããªããšããžãååŸãããŸãã ããã«ãããé¢æ£AAãèæ¯è²ã®ã«ãã¿ãåŒãèµ·ãããå¯äžã®äžèŽãšããžã¢ã³ããšã€ãªã¢ã·ã³ã°åé¡ãããªã¬ãŒãããŸãã
代ããã«ãããæ©èœãããšæãæ¹æ³ã¯ãéåæ°ã¹ã±ãŒã«ïŒããšãã°1.0ïŒã§ããããã©ã¹ã¿ã©ã€ãºããŠãããã¢ãããã¯ã«ããŠã³ã¹ã±ãŒã«ããããšã§ãã
1ïŒåã ã®ã¿ã€ã«ã®éå±€åãåé¿ããŸãïŒãtransformïŒtranslate3dïŒïŒãã®ä»£ããã«ãtransformïŒtranslateïŒïŒãã䜿çšããŸãïŒ
2ïŒã³ã³ããïŒãããå šäœïŒã®éå±€åã匷å¶ããŸãïŒã³ã³ããã§ãtransformïŒscale3dïŒïŒãã䜿çšããŸãïŒ
3ïŒã¹ã±ãŒã«== 1.0ã§ã³ã³ããã¬ã€ã€ãŒã®ã©ã¹ã¿ã©ã€ãºã匷å¶ããŸããããã®å€æŽã«ããããããã¿ã€ã«ç»åã1.0ã®ã¹ã±ãŒã«ã§ã©ã¹ã¿ã©ã€ãºããå¿ èŠãããïŒ=>ãšããžã¯ãã¯ã»ã«æŽå=>ç¶ãç®ã¢ãŒãã£ãã¡ã¯ããªãïŒããããã¬ã€ã€ãŒå šäœãã¢ãããã¯ã«ããŠã³ã¹ã±ãŒã«ããå¿ èŠããããŸãã
æ®å¿µãªãããïŒ3ã¯äºçŽ°ãªããšã§ã¯ãªããç§ãèããããšãã§ããå¯äžã®ããã¯ã¯
- scaleïŒ1ïŒããå§ããŠãå€æŽããŸãïŒå€æïŒè©³çŽ°ã«ã€ããŠã¯ãhttpsïŒ//groups.google.com/a/chromium.org/forum/#ïŒtopic / blink-dev / Ufwrhx_iZ7Uãåç §ããŠãã ããïŒ
- æåã®ã©ã¹ã¿ãŒãã¹ã®åŸã§ãã¬ã€ã€ãŒã¹ã±ãŒã«ãç®çã®å€ã«ãªã»ããããŸã
äŸïŒhttp ïŒ
chrishtr / danakjã¬ã€ã€ãŒã©ã¹ã¿ãŒã¹ã±ãŒã«ã®ã»ãã³ãã£ã¯ã¹ãæ£ããååŸããŸãããïŒã¬ã€ã€ãŒã©ã¹ã¿ãŒåã¹ã±ãŒã«ãç¹å®ã®å€ã«ããã¯ããããã®ããè¯ãæ¹æ³ã¯ãããŸããïŒ
ããªãã¯ããã«çããã®ãæäŒã£ãŠããããŸããïŒ
ä¿®æ£ãé²è¡äžã§ããããšã¯ç¥ã£ãŠããŸããïŒãããæšãé²ããŠãããŠããããšãïŒïŒããããŸã§ã®é... @ cmuldersã®ã¢ã³ããŒããããæé©ã§ãã ããã¯ãLeafletãnpmã¢ãžã¥ãŒã«ãšããŠåã蟌ã¿ãES6ã䜿çšãã誰ããã³ããŒãã¹ã¿ã®è¯ããæ¢ããŠããå Žåã«åããŠãäºéãããããªãããšãä¿èšŒããããŒãžã§ã³ã§ãã
https://gist.github.com/ericsoco/5712076f69f9068b11d41262b9e93666
import leaflet from 'leaflet';
// ...
patchMapTileGapBug();
// ...
function patchMapTileGapBug () {
// Workaround for 1px lines appearing in some browsers due to fractional transforms
// and resulting anti-aliasing. adapted from <strong i="9">@cmulders</strong>' solution:
// https://github.com/Leaflet/Leaflet/issues/3575#issuecomment-150544739
let originalInitTile = leaflet.GridLayer.prototype._initTile;
if (originalInitTile.isPatched) return;
leaflet.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';
}
});
leaflet.GridLayer.prototype._initTile.isPatched = true;
}
人ã
ãããã調ã¹ãŠãããŠããããã§ãã çæ³çãšã¯èšããªãåé¿çãšããŠèª°ãã«åœ¹ç«ã€å ŽåïŒæ
£æ§ãç ç²ã«ããå Žåã¯ããããã®initã«intertia:false
ãèšå®ãããšãã®ã£ããããªããªããå Žåã«ãã£ãŠã¯zoomAnimation:false
ç§ã¯ããã«å¯ŸããïŒé床ã«è€éãªïŒè§£æ±ºçãèŠã€ãããšæããŸããç§ã¯ãããhttps://github.com/Leaflet/Leaflet.TileLayer.NoGapã«èŒããŸãã-ããã©ãŒãã³ã¹ãããããªãã®ã§ã³ã¡ã³ãã¯å€§æè¿ã§ãå€ãã³ã³ãã¥ãŒã¿/é»è©±ã§ãã®ããšã®ã
cc @Eschon @hyperknot
ãšããã§ããã®ãã°ã¯ãé«DPIïŒ2560x1140ïŒç»é¢ã§Chromeã䜿çšããŠãããšãã«ãçºçããŸãããªãŒãã¬ããã®åæ°ãºãŒã ãããã©ãŠã¶ãŒã®ãºãŒã ã䜿çšããå¿ èŠã¯ãããŸããã
è¿äºãé ããŠç³ãèš³ãããŸããã
ç§ã¯ããªãã®ãœãªã¥ãŒã·ã§ã³ããã¹ãããŸããã ãã¢ã¯ããŸãæ©èœããã®ã§ãã¢ããªã±ãŒã·ã§ã³ã«ä¿®æ£ãè¿œå ããããšããŸããã ç§ã¯ãŸã å€ã1.0-devããŒãžã§ã³ã®Leafletã䜿çšããŠããã®ã§ã httpïŒ //leafletjs.com/download.htmlãã1.0.0-rc3ã«æŽæ°ããŸããã
ç§ãæåã«æ°ä»ããã®ã¯ãããã«ãšã©ãŒãããããã ãšããããšthis._map
ã«å€æŽããŸããã
ãã®åŸã¯åäœããŸããããç§ã®ä»äºçšã³ã³ãã¥ãŒã¿ã§ã¯æ¬åœã«é ãã§ãã ç¹ã«Chromeã§ã¯ãFirefoxãé ãã£ãã
é©ããããšã«ãç§ããã¹ãããé»è©±ã«ã¯ããã»ã©å€§ããªåœ±é¿ã¯ãããŸããã§ããã
Androidäžã®Firefoxã¯ä»¥åãšåãããã«èŠããŸãããChromeã¯å°ãé
ãã§ãããããã»ã©æªãã¯ãããŸããã
iOSã®Safariã以åãšã»ãŒåãããã§ãã
ç§ãæ°ä»ããããäžã€ã®å¥åŠãªããšã¯ãã¢ãã€ã«ChromeãšSafariã§ã¯ãã³ããºãŒã ãåºå®ã¬ãã«ã«ã¹ãããããŠããããã«èŠããããšã§ã
@Eschonããããã¹ãããŠãããŠããããšãïŒ
ç§ã¯ãã€ãmap
代ããã«this._map
map
ãå
¥åããã®ãééããŸã:-(
ãã®åŸã¯åäœããŸããããç§ã®ä»äºçšã³ã³ãã¥ãŒã¿ã§ã¯æ¬åœã«é ãã§ãã ç¹ã«Chromeã§ã¯ãFirefoxãé ãã£ãã
ãã®ã³ã³ãã¥ãŒã¿ãŒã§ãããã¡ã€ã©ãŒãå®è¡ã§ããŸããïŒ é床äœäžããã£ã³ãã¹æäœã«é¢é£ããŠãããã©ãããç¥ã£ãŠãããšäŸ¿å©ã§ãã IE9-IE11ã§ã¯ããã©ãŒãã³ã¹ãå°ãäœäžããŠããããšã«æ°ã¥ããŸããã
ãã®ãœãªã¥ãŒã·ã§ã³ã«ãã£ãŠäžéšã®ãã©ãããã©ãŒã ã§ããããé ããªããã©ããã«åºã¥ããŠãå®å šã«ãªãã·ã§ã³ã«ããããã©ã«ãã§ãªãã«ããããšãçã«ããªã£ãŠããå ŽåããããŸãã ããã§ã®ããã€ãã®ãã£ãŒãããã¯ã¯éèŠã§ãïŒ
OL3ã®äººã ããã®åé¡ãã©ã®ããã«è§£æ±ºãããããŸãã¯ãã£ã³ãã¹åæãæå¹ã«ããåã«ãã©ãŠã¶ãŒã§ããã©ãŒãã³ã¹æ€åºãè¡ããã©ããã«ã€ããŠã¯ãå®éã«ã¯èª¿ã¹ãŠããŸããã äžèŠã®äŸ¡å€ããããããããŸããã
ç§ãæ°ä»ããããäžã€ã®å¥åŠãªããšã¯ãã¢ãã€ã«ChromeãšSafariã§ã¯ãã³ããºãŒã ãåºå®ã¬ãã«ã«ã¹ãããããŠããããã«èŠããããšã§ã
ããã¯zoomDelta
ãšzoomSnap
ãªãã·ã§ã³ãããã£ãŠããã ãã§ããã®ãã°ãšã¯é¢ä¿ããªãã«éããããŸããã
ãã®ã³ã³ãã¥ãŒã¿ãŒã§ãããã¡ã€ã©ãŒãå®è¡ã§ããŸããïŒ é床äœäžããã£ã³ãã¹æäœã«é¢é£ããŠãããã©ãããç¥ã£ãŠãããšäŸ¿å©ã§ãã IE9-IE11ã§ã¯ããã©ãŒãã³ã¹ãå°ãäœäžããŠããããšã«æ°ã¥ããŸããã
Chromedev-toolsã䜿çšããŠJavaScriptCPUãããã¡ã€ã«ãèšé²ããå¿ èŠããããŸããïŒ ç§ã¯ãã®ããã©ãŒãã³ã¹ãã¹ãã«é¢ããçµéšãããŸããªãã®ã§ãããã瀺ãããŒã¿ãã©ãããã°ããã®ãããããããŸããã
ããããããåé¡ã§ãã 次ã«ããã¬ãŒã ãã£ãŒãã§å¹ åºããã®ãæ¢ããŸãã
ä¿®æ£ãå ãããããã¡ã€ã«ãšä¿®æ£ãå ããŠããªããããã¡ã€ã«ãäœæããŸããã ç§ã¯äž¡æ¹ã®ãããã¡ã€ã«ã§ã»ãŒåãããšãããããšããŸããã
ä¿®æ£ãããããŒãžã§ã³ã«_onZoomTransitionEnd
ãåå ã§è¿œå ã®ãããŒã¯ãïŒãããæ£ããåèªãã©ããã¯ããããŸããïŒãããããšã«æåã«æ°ã¥ããŸãã
ä¿®æ£ãªãã®ããŒãžã§ã³ã§ã¯ã _onZoomTransitionEnd
ã¯1.8ããªç§ããããã°ã©ãã«ã衚瀺ãããŸããã§ããã ä¿®æ£ãããããŒãžã§ã³ã§ã¯ã6ããªç§ããããã¢ã¯ãã£ããã£ã®ãããŒã¯ããçºçããŸããã
ä»ã®2ã€ã®ãããŒã¯ãã¯ã2ã€ã®ãããã¡ã€ã«ã§éåžžã«ãã䌌ãŠããŸãããå°ãç°ãªãããã«èŠããŸãããä¿®æ£ãããããŒãžã§ã³ã§ã¯ããããã®éã®ã®ã£ããã倧ãããªã£ãŠããŸãã
ããããªããšãã圹ã«ç«ãŠã°å¹žãã§ãã ãŸãã2ã€ã®ãããã¡ã€ã«ãä¿åããã®ã§ãå¿ èŠã«å¿ããŠã©ããã«ã¢ããããŒãã§ããŸãã
ãšãããããæ±ãåé¿çãšããŠãå ã®é¢æ°ã«.002ã®ã¹ã±ãŒã«ä¿æ°ãè¿œå ããŠãåã¿ã€ã«ã«translate3dããããã£ãèšå®ããã®ã£ãããã»ãŒå®å šã«æé€ããŸãã ã.002ãã¯ãã®ã£ãããå®å šã«ãªããããã®ãã¹ãã±ãŒã¹ã§æãäœãåçã§ããã å¯äœçšã¯ãããŸããã§ããã
ææ°ã®ChromeãFirefoxãIE11ã§ãã¹ãæžã¿ããã©ãŠã¶å ã®ããŸããŸãªãºãŒã å€ã§ãŠã£ã³ããŠã¹ã±ãŒãªã³ã°ã150ïŒ ã«èšå®ãã40ã€ã³ã4kã¢ãã¿ãŒã§ãã¹ãæžã¿ã
ãã®ãã°ã®é²å±ã¯ãããŸããïŒ @AlexanderUhlããªãã®ãœãªã¥ãŒã·ã§ã³ã¯ãé 眮ããããšãã«ç»åã®å€æŽãåŒãèµ·ãããŸããããããšã移å/ãºãŒã äžã«ã®ã¿åœ±é¿ãåããŸããïŒ
ãã®åé¡ã解決ããããã«will-change
CSSããããã£ãè¿œå ãããããã§ããããã§èª¬æãããŠããããã«ãFFããã©ãŒãã³ã¹èŠåã確èªããã ãã§æžã¿ãŸãïŒ https ïŒ
@themre ïŒscaleããããã£ã¯ãè¿œå ããããšãã¹ãŠã®ç»åã¿ã€ã«ã«é©çšãããæ°žç¶çã«ãªããŸãã ã¹ã¿ã€ã«å±æ§ã¯æ¬¡ã®ããã«ãªããŸãã
style="width: 256px; height: 256px; transform: translate3d(545px, 745px, 0px) scale(1.002); opacity: 1;"
ããããããã¯ç»åãå°ãåŒã䌞ã°ãããšã«ãªããããã¯æãŸãããªãå¹æã§ãã will-change
CSSããããã£ãæã€1.0.3ããŒãžã§ã³ãè©ŠããŸããããããã§ããã¯ã€ãã®ã£ãããçºçããŸãã ããå°ãèŠãŠã¿ãŸãã
å€ãã®å Žåãããã¯imgãæ¡åŒµããŸãããããã¢ãããŒãã§ã;-)ãã®åé¿çã¯çæ³çã§ã¯ãªãããšã«åæããŸãããéåžžã¯åé¿çã®æ§è³ªã§ããtbhã§ã¯ãããŸãããïŒ ããã«ããããããããã®ã¢ãããŒãã¯ãããããããªå¯äœçšã§ç§ã«ãšã£ãŠæé©ã«æ©èœããŸãïŒmapboxããããosmãªã©ããã®ã¿ã€ã«ã䜿çšãããããã³ã°ã¢ããªã±ãŒã·ã§ã³ã§ããç§ã®ãŠãŒã¹ã±ãŒã¹ã®å ŽåïŒ
éåžžã®translate
ã䜿çšãããšãåé¡ã¯è§£æ±ºããŸãã translate3d CSSããããã£ãéåžžã®å€æãããã¯ããã«é«éãã©ããã¯ããããããŸãããããããããã®ãã©ã°ããªãã·ã§ã³ãšããŠè¿œå ããã®ãæåã§ããããtranslate3dãtrââanslateã«çœ®ãæããã€ããã ãšæããŸãã
åäœäžã®ãã¥ãŒïŒ
ææ°ããŒãžã§ã³ïŒ1.0.3ïŒã§åãåé¡ã«çŽé¢ããŠããŸãã
1.1ã§ä¿®æ£ãããå¯èœæ§ããããŸã
2017æ8äžã«ãæ°Žã¯10ïŒ13ã§ãã®Gaurav [email protected]æžããŸããïŒ
ãç»åïŒç»åã
https://cloud.githubusercontent.com/assets/13112509/23697357/7dcc4cf6-040d-11e7-881a-df3a44254015.png
ææ°ããŒãžã§ã³ïŒ1.0.3ïŒã§åãåé¡ã«çŽé¢ããŠããŸããâ
ããªããèšåãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/Leaflet/Leaflet/issues/3575#issuecomment-284987808 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AAeKj_23QbtFCaXeFjGRJcU-jg0284xBks5rjnEvgaJpZM4FO8Jh
ã
.leaflet-pane.leaflet-map-pane divã®å€æã«äœ¿çšãããnxãšnyã®å€ãæŽæ°ã«äžžãããããšãSafariã§ã©ã€ã³/ã®ã£ããã®åé¡ã解決ãããŸãã æ害ãªå¯äœçšã¯èŠãããŸããïŒãšã«ãã䜿çšããããïŒã
ãããèŠã€ããïŒ
translate3d("+n.x+"px,"+n.y+"px,0)")
ãšçœ®ãæããŸãïŒ
translate3d("+Math.round(n.x)+"px,"+Math.round(n.y)+"px,0)")
@LudwigBogneräœããã®ã¹ã±ãŒãªã³ã°ïŒããšãã°ããã©ãŠã¶ãºãŒã ã®èšå®ããŸãã¯ãºãŒã ã¢ãã¡ãŒã·ã§ã³äžïŒãå®è¡ãããšããšã«ãã倱æããå¯èœæ§ããããŸãã äžèšã®ãªã³ã¯å ã®ãã®äŸãåç §ããŠãã ãããããã§ã¯ã翻蚳èªäœãäžžããããŠããŸãïŒ http ïŒ
ããã«åãŸããã ç§ã«ãšã£ãŠã¯ãChromiumãFireFoxã«ã¯ååšããªãããã§ãã Safariã®ãã©ã¯ã·ã§ãã«ãºãŒã ã®ã»ãã®äžéšã§ãã
é²æïŒ
ãã®åé¡ã¯ãChromeãšFirefoxïŒMacïŒã§ãåŒãç¶ãçºçããŸãã 0.25ã®zoomDeltaãšzoomSnapã䜿çšããŠããŸãã
å¥åŠãªããšã«ã .leaflet-tile { will-change: auto !important; }
ïŒãŸãã¯ãæªèšå®ãïŒãèšå®ãããšãFirefoxïŒã®ã¿ïŒã®åé¡ãä¿®æ£ãããŸãã Chromeã®åé¿çããŸã æ¢ããŠããŸãã
æ £æ§ãç¡å¹ã«ããtranslate3dã³ãŒããå€æŽããŠäžžããè¿œå ããããã«ææ¡ãããä»ã®ä¿®æ£ãæ©èœããŸããã§ããã
@jawinn L_DISABLE_3D
ãtrue
ã«èšå®ãããšãæåããå¯èœæ§ããããšæããŸããIIRCã¯ã will-change
ãå€æŽããã®ãšã»ãŒåãå¹æããããŸããã€ãŸããã¬ã³ããªã³ã°æã«ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãåé€ãããŸããå°å³ã ãºãŒã ã¢ãã¡ãŒã·ã§ã³ããã³ãªã©ã®ããã©ãŒãã³ã¹ã倧å¹
ã«äœäžããå¯èœæ§ãããããšã«æ³šæããŠãã ããã
ãããã¯ãã¹ãŠãã©ãŠã¶ã®å®è£ ã®è©³çŽ°ã«éåžžã«ææãªã®ã§ããããäžç²ã®å¡©ã§èããŠã¿ãŠãã ãããç§ãããã調ã¹ãŠããããªãæéãããããŸããã
@jawinn
ç§ã䜿çšããåé¿çã¯ãäžèšã®ãã®ã§ãã
/*
* 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';
}
});
})()
å®ç§ã§ã¯ãããŸããããç§ãç¥ãéããããã©ãŒãã³ã¹ã«ã¯åœ±é¿ããŸããã
ã¿ããªããããšãã @Eschonããã¯ããŸããã£ãã ChromeãŸãã¯Firefoxã«ã®ã£ããã¯è¡šç€ºãããªããªããŸããã
ã1pxä¿®æ£ãã䜿çšããå Žåã¯ãç»åããŒãããŠå°ãå£ããããšã«åããŠãã ããã
å
ã®ç»åã®ã¬ã³ããªã³ã°ãšãã©ãã·ã§ããã³ã°ã«äœæéãè²»ãããç§ã«ãšã£ãŠãããã¯åãå
¥ããããŸããã§ããã ãã®ããã L_DISABLE_3D = true
ã䜿çšããŠãã¢ãã¡ãŒã·ã§ã³ã®ã¡ãã€ããšãžã£ã³ããããºãŒã ã«èããªããã°ãªã
è©³çŽ°ïŒ leaflet-rastercoordsãã©ã°ã€ã³ã䜿çšããŠããããããèšå®ã¯æ¬¡ã®ãšããã§ãã
map = L.map('map', {
center: [3250, 1700],
zoom: 5,
minZoom: 2,
maxZoom: 6,
maxBoundsViscosity: 1,
});
QïŒãã®ãããªãã¿ã€ã«éã®ã¹ããŒã¹ããã°ããªãLeafletã®æ¬¡åã®ä»£æ¿æ¡ã¯äœã§ããïŒ
ç§ã¯ãããèªåã§ã°ãŒã°ã«ããŸãããããå€å誰ãããã§ã«ãã®éãé²ãã ã§ãããã
@ n3tman NoGapãã©ã°ã€ã³ãè©ŠããŸãããïŒ äžæã®äŸ¡å€ããããããããŸããã
@perliedmanããã«èšåããŠ
æ®å¿µãªãããããŒã«ã«ã§åäœãããããšãã§ããŸããã§ããã _initContainer
é¢æ°ã§Cannot read property 'appendChild' of undefined
ãšã©ãŒãçºçããŸããã
以åã®ããŒãžã§ã³ã®LeafletïŒæ倧1.0.2ïŒã§è©ŠããŠã¿ãŸãã-åãçµæã§ãã ãã¢ã§ã¯ãChrome / Firefoxã§ãåããšã©ãŒã衚瀺ãããŸãã
å€åç§ã¯æçœãªäœããéããŠããŸããããªãã¯å©ããŠãããŸããïŒ
ããã«åã1pxã®ã®ã£ããã
ChromeããŒãžã§ã³66.0.3359.139ïŒ64ãããïŒ
Windows 10ïŒ1709ïŒ
ãªãŒãã¬ãã1.3.1
ãã®åé¡ãæåã«éãããšãããããéšåãºãŒã ã¬ãã«ã«é¢é£ããŠããããšãããããŸããããããããã¯ãå¯äžã®åå ã§ã¯ãªãå¯èœæ§ããããŸãã
æè¿ã GoogleMutantãã©ã°ã€ã³ã䜿çšãããããžã§ã¯ããéå§ããŸãããããºãŒã ã¬ãã«ãæŽæ°ã«èšå®ããå°ãã ããã³ãããšãã«ããããçºçããããšãããããŸããã
ãºãŒã ããã³ãè¡ã£ãŠãã®ã£ããã¯è¡šç€ºãããŸãããïŒ6069ã«é¢é£ããŠããããã§ãïŒ6240ã§ä¿®æ£ãããŠããŸãã
ãŸããä»ã®ãããžã§ã¯ãããåé¿çãåé€ããŸããããããã§ãçºçããŠããããã§ãã®ã§ãGoogleMutantãã©ã°ã€ã³ã«åºæã®ãã®ã§ã¯ãããŸããã
@cmulders 1pxã®åé¿çã«è§Šçºãã
(function(){
var originalInitTile = L.GridLayer.prototype._initTile
L.GridLayer.include({
_initTile: function (tile) {
originalInitTile.call(this, tile);
var tileSize = this.getTileSize();
var map = this._map;
var isFix = function() {
return !(parseFloat(tile.style.width) % 0 === 0);
};
var fixOn = function() {
if(!isFix()) return;
tile.style.width = tileSize.x + 0.5 + 'px';
tile.style.height = tileSize.y + 0.5 + 'px';
};
var fixOff = function() {
if(isFix()) return;
tile.style.width = tileSize.x + 'px';
tile.style.height = tileSize.y + 'px';
};
var checkFix = function(){
var zoom = map.getZoom();
if(zoom % 1 === 0) {
fixOff();
}
else {
fixOn();
}
};
map.on('zoomstart',fixOn);
map.on('zoomend',checkFix);
checkFix();
}
});
})()
3幎以äžçµã£ãŠãããã®ãã°ã¯Chromeã§ã¯ãŸã 解決ãããŠããŸããã FirefoxãSafariã§ã¯å¹æãèŠãããŸããã åé¿çãããããšã
ããã§ãåãã§ãïŒWindows 7 Enterprise SP1ïŒã Firefoxã§ã¯ãã¡ãã¡ã«ç·ããããChromeã§ã¯å®å šãªç·ã°ãªããã§ãããIE11ã§ã¯åé¡ãããŸããã @cmuldersã®ä¿®æ£ã¯FirefoxãšChromeã§æ©èœããŸãã
ããã«ããã€ãã®ãã¹ãã®å®å šãªçµæã次ã«ç€ºããŸãã
ãããªããã¹ãã«ãããããã¯æããã«éåžžã«äœã¬ãã«ã®åé¡ã§ãããLeafletãšã¯é¢ä¿ããªãããšã瀺ãããŸããã
Windows 7 Enterprise SP1ã§ã®ãã¹ãã¯ãæåã¯2å°ã®ç°ãªãPCã§è¡ãããŸããããã©ã¡ããNVIDIAã°ã©ãã£ãã¯ã¹ã䜿çšããŠããŸããã
AMDRadeonã°ã©ãã£ãã¯ã¹ãæèŒããWindows7 Enterprise SP1ã§åããã¹ããè¡ã£ããšãããåé¡ã¯ãªããChromeãŸãã¯Firefoxã®ã¿ã€ã«éã«ç·ã¯ãããŸããã§ããã
NoGapã«ã€ããŠã¯åã«èª¬æããããã«ãå
ã®ã³ãŒããååŸããŠãçŸåšã®ãªãŒãã¬ããããŒãžã§ã³ïŒãªãŒãã¬ãã^ 1.3.3ïŒã§æ©èœããããã«å€æŽããããšããç¥ããããããšæããŸãã
https://github.com/Endebert/squadmc/blob/master/src/assets/Leaflet_extensions/NoGapTileLayer.js
ãã®åŸãéåžžã®TileLayerã®ããã«äœ¿çšã§ããŸãïŒ //github.com/Endebert/squadmc/blob/master/src/assets/SquadMap.js#L34
es6æ©èœã䜿çšããŠãããããæ©èœãããã«ã¯ããã€ãã®å€æŽãå¿ èŠã«ãªãå ŽåããããŸãã
NoGapã«ã€ããŠã¯åã«èª¬æããããã«ãå ã®ã³ãŒããååŸããŠãçŸåšã®ãªãŒãã¬ããããŒãžã§ã³ïŒãªãŒãã¬ãã^ 1.3.3ïŒã§æ©èœããããã«å€æŽããããšããç¥ããããããšæããŸãã
https://github.com/Endebert/squadmc/blob/master/src/assets/Leaflet_extensions/NoGapTileLayer.jsãã®åŸãéåžžã®TileLayerã®ããã«äœ¿çšã§ããŸãïŒ //github.com/Endebert/squadmc/blob/master/src/assets/SquadMap.js#L34
es6æ©èœã䜿çšããŠãããããæ©èœãããã«ã¯ããã€ãã®å€æŽãå¿ èŠã«ãªãå ŽåããããŸãã
@Endebert NoGapãæ©èœãããããšãã§ããŸãããïŒ å°ãåã«@ n3tmanãšåããšã©ãŒãçºçããŸããïŒ
Cannot read property 'appendChild' of undefined
_initContainer
é¢æ°ã®Cannot read property 'appendChild' of undefined
ãšã©ãŒã
ããªãã®ããŒãžã§ã³ã§ç§ãèŠã€ããå¯äžã®å€æŽã¯ã try ... catch
ã®åŒã³åºãã«level.ctx.drawImage(imageSource, offset.x, offset.y, tileSize.x, tileSize.y);
try ... catch
ãè¿œå ããããšã§ã
ãããŠããã¯å©ãã«ã¯ãªããªãã£ãã
@TomazicMã¯ããç§ã®å®è£ ã¯ç§ã®ã¢ããªSquadMCã§äœ¿çšãããŠããŸãã ãã¹ã¯ãããã§ã¯ããã»ã©æçœã§ã¯ãªããããããŸããããã¢ãã€ã«ã§ã¯ãã¹ããããªãã®åæ°ãºãŒã ãæå¹ã«ãªã£ãŠããããšã¯æããã§ãã
å®è£
ã«é¢ããŠïŒå
ã®ããŒãžã§ã³ã¯TileLayer.include()
ã䜿çšããŸãããç§ã¯TileLayer.extend()
ã䜿çšããŸãã ãããéèŠãªéãã ãšæããŸãã åè¿°ã®ããã«ãããã¯TileLayerã®ä»£ããã«äœ¿çšããããšãç®çãšããæ°ããã¯ã©ã¹ã§ãã
ããŠãããã2æéã®èª¿æ»ã®çµæã§ãã ãã®åé¡ã¯ã translate3d
å
ã®ãã¯ã»ã«ã®å°æ°ãåå ã§çºçããŸãã
<div class="leaflet-pane leaflet-map-pane" style="transform: translate3d(-10.7773px, -8.41406px, 0px);"></div>
ãœãŒã¹ã³ãŒãã®ãã®translate3d
䜿çšããªãããã L_DISABLE_3D = true
ã§ããŸãæ©èœããã®ã¯ãã®ããã§ãã
10é²ãã¯ã»ã«ãèš±å¯ããªãã§ãã ããã ããã¯ãããšãã°æ¬¡ã®æ¹æ³ã§å®çŸã§ããŸãã
translate3d
ãèšå®ãããåã®äžžããªãã»ãã```js
var pos = (offset && offset.round()) || new Point(0, 0);
```
ããŠãããã2æéã®èª¿æ»ã®çµæã§ãã ãã®åé¡ã¯ã
translate3d
å ã®ãã¯ã»ã«ã®å°æ°ãåå ã§çºçããŸãã
ä»æ¥ã¯2019幎ã§ããã translate3d
ã䜿çšããŠææ°ã®ãã©ãŠã¶ãŒã§GPUã匷å¶çã«äœ¿çšããããšã¯ããªãæ代é
ãã ãšæããŸãã ãç²ãæ§ã§ãã@mdorda
@mdordaããã«ã¡ã¯ïŒ é¢çœããã«èãããŸãããäžžãã«ã€ããŠã¯ãã®ã¹ã¬ããã§ä»¥åã«èª¬æããããšããããŸãïŒ https ïŒ
ãã以éã«éèŠãªå€æŽããã£ããã©ããã¯ããããŸãããã培åºçãªãã¹ããè¡ããŸã§ã¯æåŸ ãæãŠãŸããã
ããã解決ããããã®æåã®ã¹ãããã¯ãããããã¹ãã§ããããã«PRãæåºããããšã§ãã
Angular 2+ã䜿çšããŠãã人ã®ããã«ãç§ã¯ãã®æ¹æ³ã§ããã解決ããŸããã ããã¯ç§ã®åçŽãªãŠãŒã¹ã±ãŒã¹ã§æ©èœããŸãããä»ã®åœ±é¿ã«ã€ããŠã¯ããããŸãã...
const tileLayer = new TileLayer(this.tileLayerUrlTemplate, this.tileLayerOptions);
tileLayer.on('load', () => {
for (const tile of Array.from(document.getElementsByClassName('leaflet-tile'))) {
(<HTMLElement>tile).style.height = (tile.clientHeight + 1) + 'px';
(<HTMLElement>tile).style.width = (tile.clientWidth + 1) + 'px';
}
});
this.map.addLayer(tileLayer);
ãã®ãã¯ã»ã«ã®ã£ããã¯ãMozilla Firefox 69.0.1ïŒ64ãããïŒãæèŒããWindows 10 Pro1903ã®LeafletJSããŒãžã§ã³1.5.1ã®åæ°ãºãŒã ã§èŠãããŸãã
ãã¯ã»ã«ã®ã£ãã
ãã¯ã»ã«ã®ã£ããã®çç±ã¯ãtranslate3dïŒïŒCSSé¢æ°ã§ã¯ãªããscaleïŒïŒã«ãããšæããŸãã
ããŒãžã§ã³1.5.1ã§ã¯ãç§ãèŠãããã«ãtranslate3dïŒïŒãã©ã¡ãŒã¿ãŒã¯æŽæ°ã®ã¿ã§ãã
ãããããé¡ãããããŸããIMMSPgisgroup
ãã®ãã°ã®è§£æ±ºçãèŠã€ããŸãããïŒ
ãã®ç¬éã«åãåé¡ãçºçãã解決çãèŠã€ãããŸããã§ããã
ç§ã¯äœ¿çšããŠããŸãïŒ
Firefoxã䜿çšãããšãçœãç·ã衚瀺ãããŸãã
@ Arenivar93
Naç§ã¯ããæ°å¹Žããã«ç®ãåããŠããŸããã 圌ãã¯ããã€ãã®åé¿çãè©ŠããŸãããã倧ããªåŠ¥åãªãã«ãããä¿®æ£ããããã«äœãæ©èœããŸããã§ããã åé¡ã®æ ¹æ¬ã¯ã¯ãã ã®äžæµã«ãããŸãïŒ //bugs.chromium.org/p/chromium/issues/detailïŒid = 600120
ã¯ãã ããŒã ããã®ææ°ã®ã¡ãã»ãŒãžã¯ãä»ã®ãã®ãå£ããã«è¡ãã®ã¯é£ããããã®ã§ããã°ããã®éããã§ç«ã¡åŸçãããããããªããšããããšã§ãã
ç¹ã«æãå°å³ãç»åïŒç§ã®å ŽåïŒã§ã¯ããã®åé¡ã¯éåžžã«é¡èã§ãã Ivanãè¿°ã¹ãããã«ããã©ãŠã¶ã§ã®ã¢ã³ããšã€ãªã¢ã¹ã«ããããºãŒã äžã®_fractional_å€æãåå ã§ã¿ã€ã«éã«ã¹ããŒã¹ãçãããšæããŸãã
ããè¯ã解決çãå©çšå¯èœã«ãªããŸã§ããã®åé¿çïŒãŸãã¯ããã¯ïŒã䜿çšããŠã¿ã€ã«ã1ãã¯ã»ã«å€§ããããå¯äœçšãšããŠ1ãã¯ã»ã«éãªãããã«ããŸãã ããã«å ããŠãã¿ã€ã«ã¯ãããã«æ¡å€§ããã³æ¡å€§çž®å°ãããŸãïŒ1pxïŒã
/* * 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'; } }); })()
ãã®ãœãªã¥ãŒã·ã§ã³ã«ã¯ããªãã®å¹žéããããŸããã ããã¯å®ç§ã§ã¯ãããŸããããç§ãã¡ã®æèŠã§ã¯ç·ãããåªããŠããŸãã
ããã«å ããŠããããã®èæ¯è²ãããŒã¹ãããã®è²ãšããäžèŽããããã«ããŸããã ããšãã°ãæµ·ã玺è²ã®å Žåãã¿ã€ã«ããã®è²ã«éãªãããã«äœ¿çšããŠãç®ç«ã€äžæŽåã®äžéšãæå°éã«æããŸãã
åã³å®ç§ã§ã¯ãããŸããããããã¯åœ¹ç«ã¡ãŸã
@colbyfayockãœãªã¥ãŒã·ã§ã³ãã©ãã«ã©ã®ããã«å®è£ ããŸããïŒ
ç°ãªãå¯èœæ§ããããããreactã¢ããªãäœæããŠããŸããã次ã®å 容ã®ãã¡ã€ã«ãäœæããŸããã
// Fix via https://github.com/Leaflet/Leaflet/issues/3575#issuecomment-150544739
import L from 'leaflet';
(function () {
if (!L || !L.GridLayer || !L.GridLayer.prototype) return;
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';
}
});
})();
äžçªäžã®ãªã¿ãŒã³ã¯ãããªã³ã³ãã€ã«ãããŠåžžã«å©çšã§ãããšã¯éããªãããã§ãïŒããã§ã¯éèŠã§ã¯ãããŸããïŒ
ãªãŒãã¬ãããã€ã³ããŒãããåŸãåã«ã€ã³ããŒãããŸã
import L from 'leaflet';
...
import '../plugins/leaflet-tilelayer-subpixel-fix';
ç§ã®åé¿çã¯ããœãŒã¹ã³ãŒãã«å€æŽãå ããã«å€æå€ãäžžããããšã§ãã
reactã§äœ¿çšããŸãããJQueryã§ãããããã©ã®ããã³ããšã³ãã§ã䜿çšã§ããŸã
ãããæåã®éžæè¢ã§ãããšã¯èšããããã ãããæãéããã ãã§ãã
ããã«ããåé¡ãä¿®æ£ãããç®ç«ã£ããŒãããäœããã®æ¬ é¥ã¯èŠ³å¯ãããŸããã§ããã è©Šãã ãã®äŸ¡å€ããããŸãã
this.leftMap.on('move', () => {
const mapDiv = window.document.getElementsByClassName("leaflet-pane leaflet-map-pane")
let styleString = mapDiv.getAttribute("style");
const transformValue = styleString.substring(styleString.indexOf("(")+1,styleString.indexOf("px,"));
const roundedTransformValue = Math.round(parseFloat(transformValue));
styleString = styleString.replace(transformValue,roundedTransformValue);
mapDiv.setAttribute("style",styleString);
});
@ colbyfayock-ç§ã«ãšã£ãŠã¯ä¿®æ£ãããŠããªãããã§ãã :(
ãºãŒã ã¹ããã0ã®åå¿ãªãŒãã¬ããã䜿çšããŠããŸãã
解決çã¯ç§ãã¡ã«ãšã£ãŠå®ç§ã§ã¯ãããŸããã§ããããç§ãã¡ã®äžã«ã¯ç¢ºãã«ãã®ãããªäžè²«ããç·ããããŸããã zoomSnap
æ©èœã«ã€ããŠã¯ããããããªãã£ãã®ã§ã調ã¹ãªããã°ãªããŸããã§ããã説æãèªãã§ãããšã 0
ããã®ããããã£ã§ã©ã®ããã«æ©èœãããããããŸããã ããããªããŠãç·ããŸã ååšãããã©ããã確èªããããã«ããããåé€ããããšããŸãããïŒ
https://leafletjs.com/examples/zoom-levels/#fractional -zoom
ç·šéïŒãµã³ãã«gifã®åŸã«èªã¿ç¶ããŸãã
zoomSnapã¯ãŒãã«èšå®ã§ããŸãã ããã¯ããªãŒãã¬ããããºãŒã ã¬ãã«ãã¹ãããããªãããšãæå³ããŸãã
ãœãªã¥ãŒã·ã§ã³ãå®å šãªæŽæ°ã®ããã©ã«ãã¹ããããè¶ ããŠåŠçã§ããªããšããåæ°ã®ç¶æ ã«ãªã£ãŠãããšæããŸãð€·ââïžãããã確ãã§ã¯ãããŸãã
ãªãŒãã¬ãã1.7-devã§ããåé¡ã¯è§£æ±ºããŸããã FirefoxãšWindows7ããã³Windows10ã®Chromeã®ã¿ã€ã«ã®å¢çç·ãIE11ããã³å€ãïŒã¯ããŒã 以å€ã®ïŒEdgeã§ã¯åé¡ãããŸãããæ°ããChromeããŒã¹ã®Edgeã§ãåãåé¡ãçºçããŸãã
å®çšçãªè§£æ±ºçã¯2ã€ãããŸãããã©ãã奜ãã§ã¯ãããŸããã 1ã€ã¯<script>L_DISABLE_3D = true;</script>
ã§3dãç¡å¹ã«ããããšã§ãããããã¯ã¢ãã¡ãŒã·ã§ã³æäœã倱ãããšãæå³ããŸãã ãã1ã€ã¯ãã¿ã€ã«ã®HTMLèŠçŽ ã1ãã¯ã»ã«æ¡åŒµããããšã§ãããããã¯ãã¿ã€ã«ããããã«ãŒãããããšãæå³ããŸãã
ç§ã¯éåžžã«åå§çãªè§£æ±ºçãèŠã€ããŸããããåå§çã§ãããšããæ§è³ªäžã100ïŒ æ©èœããŸãã å€å誰ããããã圹ã«ç«ã€ãšæãã§ãããã
解決çã¯ãåãåé¡ã®ããã¿ã€ã«ã¬ã€ã€ãŒã2ã€ã®ç°ãªãããããã€ã³ã«2å衚瀺ããäžæ¹ãä»æ¹ã®äžã«é 眮ãããªãã»ãã[-1ã-1]ãèšå®ããããšã§ãã
ã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
<style>
.originOffset {
transform: translate(-1px, -1px);
}
</style>
<script>
var pane1 = map.createPane('pane1');
var pane2 = map.createPane('pane2');
pane1.style.zIndex = 210;
pane2.style.zIndex = 220;
L.DomUtil.addClass(pane1, 'originOffset');
var layer1 = L.tileLayer( ... , {
pane: 'pane1',
...
});
var layer2 = L.tileLayer( ... , {
pane: 'pane2,
...
});
var layer = L.layerGroup([layer1, layer2]);
</script>
@cmuldersã®ææ¡ãããç§ã¯ãããã®è¡ãåºåããã¿ã€ã«éã«ãã以äžã®ã¹ããŒã¹ã¯ãããŸãã
map.onïŒ 'ãºãŒã ãšã³ããã©ãã°'ãfunctionïŒïŒ{
$ïŒ 'ïŒmap> div.leaflet-pane.leaflet-map-pane> div.leaflet-pane.leaflet-tile-pane> div> div> img'ïŒãeachïŒfunctionïŒïŒ{
ifïŒStringïŒ$ïŒthisïŒ.cssïŒ "width"ïŒïŒãincludesïŒ 'ã5'ïŒ=== falseïŒ{
var imgW = StringïŒ$ïŒthisïŒ.cssïŒ "width"ïŒïŒãsplitïŒ "px"ïŒãjoinïŒ ".5"ïŒ
var imgH = StringïŒ$ïŒthisïŒ.cssïŒ "height"ïŒïŒãsplitïŒ "px"ïŒãjoinïŒ ".5"ïŒ
$ïŒthisïŒ.cssïŒ "width"ãimgWïŒ;
$ïŒthisïŒ.cssïŒ "height"ãimgHïŒ;
}
}ïŒ;
ç§ã¯@mdordaã䜿çšããŠãleaflet-map-pane
ã®translate3d()
ã®åŒã³åºãã§æŽæ°ãçæããããšãïŒç®é ãããªã³ã«ããŠïŒåé¡ã¯è§£æ¶ãããŸãããããŠããã¹ãŠãåã³çŸããã§ãã åæ°ãä¿æããå¿
èŠãããå Žåã®åŸ®åŠãªéãããã¹ãŠç解ããŠãããšã¯èšããŸãããããã©ãŠã¶ã®åé¡ãããªãŒãã¬ããã«ããçšåºŠã®ææžãåŸãããå Žåã¯ã L.Draggable._onMove
ããããŒãªã³ã°ã«å
¥ããŠãããŸããŸããã
offset.x = Math.floor(offset.x / this._parentScale.x);
offset.y = Math.floor(offset.y / this._parentScale.y);
ãŸãã¯L.DomUtils.setTransform
pos.x = Math.floor(pos.x);
pos.y = Math.floor(pos.y);
ãã®ãããåæ°ãäžãããã翻蚳ã¯ãããŸããããã¿ã€ã«ç»åã¯åæ°ã®ç¿»èš³ã«ã¯ãªããªãã®ã§ãããããç¡é§ã«ãªããŸãïŒå³ïŒïŒã
å®éã®ãµã€ãºã§ã¯ãªãããã©ãŠã¶ã®èšå®ãæ¡å€§ãããããšãçºèŠããããã«2æéãç¡é§ã«ããŸãã
ãºãŒã ãå®éã«æ»ãã ãã§ããã¹ãŠãé
åã®ããã«æ©èœããŸããããããç§ã®å Žåã§ãã
å®éã®ãµã€ãºã§ã¯ãªãããã©ãŠã¶ã®èšå®ãæ¡å€§ãããããšãçºèŠããããã«2æéãç¡é§ã«ããŸãã
ãºãŒã ãå®éã«æ»ãã ãã§ããã¹ãŠãé åã®ããã«æ©èœããŸããããããç§ã®å Žåã§ãã
@tokenflow ïŒãã®ãããã¯ã¯ãæåéããWebkitãã©ãŠã¶ãŒã®åæ°ãºãŒã ã¬ãã«ã®ã¿ã€ã«éã®ã¹ããŒã¹ãã«é¢ãããã®ã§ãã ç§ã¯ããã§çææ°ã«ãªããªãããã«å¿ãããŠããŸããã100ïŒ ã«ãºãŒã ããããšã«é¢ããããªãã®æ å ±ã¯ã誰ãã«ãšã£ãŠæçãªè²¢ç®ã ãšæ¬åœã«æããŸããïŒ
FirefoxãšChromiumã®äž¡æ¹ã®LinuxããŒãžã§ã³ã§ãã®ãã°ã«ééããŸããã
åé¡ã¯ïŒå°ãªããšãFirefoxã®å ŽåïŒãã¡ã€ã³ã®.leaflet-tile-container
ã®scale()
ã«ããããã§ããããã¯ã document.querySelector('.leaflet-tile-container:last-of-type').getAttribute('style')
èŠã€ããããšãã§ããŸããã
äŸïŒ scale(0.707107)
ããããŸããããã¹ãŠã®imgã®åã¯å¹
/é«ã256ã§ãããããã£ãŠã次ã®ããã«èšç®ããŸãã 0.707107 * 256px = 181.019392px
ãããã¯10é²æ°ã§ãã 次ã«ãã¯ã»ã«ãäžžããŠã¹ã±ãŒã«ãšããŠäœ¿çšãããšãFirefox / Linuxã§æ©èœããããã§ãïŒ 181px / 256px = 0.70703125
ã
ãããã°ã«åœ¹ç«ã€é¢æ°ãäœæããŸããã
function getCurrentScale (doFix = false) {
const tileContainer = document.querySelector('.leaflet-tile-container:last-of-type');
if (!tileContainer) {
return;
}
const tileStyle = tileContainer.getAttribute('style');
const scaleRegEx = /scale\(([0-9\.]+)\)/i;
const matches = scaleRegEx.exec(tileStyle);
if (!matches || matches.length !== 2) {
return;
}
const scale = parseFloat(matches[1]);
const mod = (scale * 256) % 1;
if (mod) {
console.log('scale is off by px:', mod);
if (doFix) {
const newScale = Math.round(scale * 256) / 256;
console.log('old scale / new scale', scale, newScale);
const newStyle = tileStyle.replace(scaleRegEx, `scale(${newScale})`);
tileContainer.setAttribute('style', newStyle);
}
} else {
console.log('scale seems to be fine:', scale);
}
}
æåã®ãã©ã¡ãŒã¿ãŒãšããŠtrue
ãæå®ããŠåŒã³åºããšãã¹ã±ãŒã«ãä¿®æ£ããããšããŸãã ãã ããããã¯Firefoxã§ã®ã¿æ©èœããŸãã
ç§ã¯æãã§å®éã«ã¯æ©èœããªãã¯ãã®ä¿®æ£ãèŠã€ããŸããã
.leaflet-tile-container img {
width: 256.5px !important;
height: 256.5px !important;
}
ããã«ãããã¿ã€ã«ã®åšãã«å€§ããªè³éããªç¶ãç®ãçããã¯ãã§ããããŸã£ããèŠãããã¿ã€ã«éã®ã¹ããŒã¹ãåºå®ãããŸãã
@ ChrisLowe-Takorã¯ã©ããããããå®éã«æ©èœããŠããããã«èŠããŸãããäžèŠããã ãã§ã¯çç±ãããããŸããã
ããã¯ãçŸåšäœ¿çšããŠããJavaScriptã®åé¿çãããæãŸããå ŽåããããŸãããããå°ã調ã¹ãŠãã¹ããè¡ãå¿
èŠããããŸãã
@ ChrisLowe-Takor-ãããŒãããã¯ç§ã«ãããŸããããŸãïŒ è¯ãçºèŠð
@ ChrisLowe-Takorã¯ãLeaflet-packageã䜿çšããŠãRã§ãæ©èœããããã§ãã ã©ããããããšãïŒ
@ ChrisLowe-Takorã©ããããããããã®ããªãã¯ã¯ãã¹ãŠã®æããªçŸä»£ã®ãã©ãŠã¶ã§å®éã«ãããè¡ããŸãïŒå€ãç±ç·ããIE11ã®å Žåã¯å¿
èŠãããŸããïŒïŒ èŠããŠããã¹ãããšã1ã€ã ããããŸãããªãã·ã§ã³detectRetina
ãã¿ã€ã«ã¬ã€ã€ãŒã«äœ¿çšããããã£ã¹ãã¬ã€ãRetinaãã£ã¹ãã¬ã€ã®å Žåãã¿ã€ã«ãµã€ãºã¯125 x 125pxã«ãªããŸãã
ãã ãããã®ãœãªã¥ãŒã·ã§ã³ã«ã¯ãã¿ã€ã«ã³ã³ããã®æ¡åŒµã«åºã¥ããã¹ãŠã®ãœãªã¥ãŒã·ã§ã³ãšåãæ¬ ç¹ããããŸããã€ãŸããã¿ã€ã«ãå°ããŒãããŸãã
@ ChrisLowe-Takorè©ŠããŠã¿ãŸããã maxZoomãmaxNativeZoomãã倧ããå Žåãã¿ã€ã«ã¯æ£ãã衚瀺ãããŸããã
æãåèã«ãªãã³ã¡ã³ã
ç¹ã«æãå°å³ãç»åïŒç§ã®å ŽåïŒã§ã¯ããã®åé¡ã¯éåžžã«é¡èã§ãã Ivanãè¿°ã¹ãããã«ããã©ãŠã¶ã§ã®ã¢ã³ããšã€ãªã¢ã¹ã«ããããºãŒã äžã®_fractional_å€æãåå ã§ã¿ã€ã«éã«ã¹ããŒã¹ãçãããšæããŸãã
ããè¯ã解決çãå©çšå¯èœã«ãªããŸã§ããã®åé¿çïŒãŸãã¯ããã¯ïŒã䜿çšããŠã¿ã€ã«ã1ãã¯ã»ã«å€§ããããå¯äœçšãšããŠ1ãã¯ã»ã«éãªãããã«ããŸãã ããã«å ããŠãã¿ã€ã«ã¯ãããã«æ¡å€§ããã³æ¡å€§çž®å°ãããŸãïŒ1pxïŒã