From 19a3387f2cae0411e591070ba728eedacea2335b Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Fri, 05 Jul 2019 22:27:13 +0000 Subject: [PATCH] Use CSS icon for geolocation button, wrap it in #menu --- map.js | 10 ++-- icons/loc.svg | 1 map.html | 15 ++----- icons/zoom.svg | 2 icons/pin.svg | 1 map.css | 58 ++++++++++++++++++++--------- 6 files changed, 53 insertions(+), 34 deletions(-) diff --git a/icons/loc.svg b/icons/loc.svg new file mode 100644 index 0000000..3b6c3f9 --- /dev/null +++ b/icons/loc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80"><style>*{stroke:black;stroke-width:5;fill:none}</style><circle cx="40" cy="40" r="25"></circle><circle cx="40" cy="40" r="10" style="fill:black;"></circle><line x1="40" y1="15" x2="40" y2="0"></line><line x1="65" y1="40" x2="80" y2="40"></line><line x1="40" y1="65" x2="40" y2="80"></line><line x1="15" y1="40" x2="0" y2="40"></line></svg> \ No newline at end of file diff --git a/icons/pin.svg b/icons/pin.svg new file mode 100644 index 0000000..0959679 --- /dev/null +++ b/icons/pin.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64"><path d="M32,64L14.1855,29.0909A20,20 0 1 1 49.8145,29.0909ZM42,20A10,10 0 0 0 22,20A10,10 0 0 0 42,20"/></svg> \ No newline at end of file diff --git a/zoom.svg b/icons/zoom.svg similarity index 99% rename from zoom.svg rename to icons/zoom.svg index c26f046..2ab24f7 100644 --- a/zoom.svg +++ b/icons/zoom.svg @@ -1 +1 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="490" height="490"><path fill="none" stroke="#000" stroke-width="36" stroke-linecap="round" d="m280,278a153,153 0 1,0-2,2l170,170m-91-117 110,110-26,26-110-110"/></svg> +<svg xmlns="http://www.w3.org/2000/svg" width="490" height="490"><path fill="none" stroke="#000" stroke-width="36" stroke-linecap="round" d="m280,278a153,153 0 1,0-2,2l170,170m-91-117 110,110-26,26-110-110"/></svg> \ No newline at end of file diff --git a/map.css b/map.css index 2f499d9..938f5e7 100644 --- a/map.css +++ b/map.css @@ -135,25 +135,44 @@ float: right; } -.pad-left-icon { +.addon-icon { margin-left: 0.2rem; } -.icon-zoom { +.normal-icon, .addon-icon { + font-size: 1rem; +} +.icon, .icon-loc, .icon-pin, .icon-zoom { display: inline-block; - height: 1rem; - width: 1rem; + height: 1em; + width: 1em; text-indent: 1rem; overflow: hidden; - background-image: url(zoom.svg); - background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OTAiIGhlaWdodD0iNDkwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMzYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZD0ibTI4MCwyNzhhMTUzLDE1MyAwIDEsMC0yLDJsMTcwLDE3MG0tOTEtMTE3IDExMCwxMTAtMjYsMjYtMTEwLTExMCIvPjwvc3ZnPgo=); background-size: contain; background-repeat: no-repeat; +} +.reverse { + filter: invert(100%); +} +.icon-loc { + background-image: url(icons/loc.svg); + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MCIgaGVpZ2h0PSI4MCI+PHN0eWxlPip7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDo1O2ZpbGw6bm9uZX08L3N0eWxlPjxjaXJjbGUgY3g9IjQwIiBjeT0iNDAiIHI9IjI1Ij48L2NpcmNsZT48Y2lyY2xlIGN4PSI0MCIgY3k9IjQwIiByPSIxMCIgc3R5bGU9ImZpbGw6YmxhY2s7Ij48L2NpcmNsZT48bGluZSB4MT0iNDAiIHkxPSIxNSIgeDI9IjQwIiB5Mj0iMCI+PC9saW5lPjxsaW5lIHgxPSI2NSIgeTE9IjQwIiB4Mj0iODAiIHkyPSI0MCI+PC9saW5lPjxsaW5lIHgxPSI0MCIgeTE9IjY1IiB4Mj0iNDAiIHkyPSI4MCI+PC9saW5lPjxsaW5lIHgxPSIxNSIgeTE9IjQwIiB4Mj0iMCIgeTI9IjQwIj48L2xpbmU+PC9zdmc+); +} +.icon-pin { + background-image: url(icons/pin.svg); + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCI+PHBhdGggZD0iTTMyLDY0TDE0LjE4NTUsMjkuMDkwOUEyMCwyMCAwIDEgMSA0OS44MTQ1LDI5LjA5MDlaTTQyLDIwQTEwLDEwIDAgMCAwIDIyLDIwQTEwLDEwIDAgMCAwIDQyLDIwIi8+PC9zdmc+); +} +.icon-zoom { + background-image: url(icons/zoom.svg); + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OTAiIGhlaWdodD0iNDkwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMzYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZD0ibTI4MCwyNzhhMTUzLDE1MyAwIDEsMC0yLDJsMTcwLDE3MG0tOTEtMTE3IDExMCwxMTAtMjYsMjYtMTEwLTExMCIvPjwvc3ZnPgo=); } #title { top: .5em; left: .5em; - padding: 2px .5em; + padding: 0 .5em; + font-size: 1.14em; + line-height: 1.4em; + height: 1.375em; font-weight: bold; background-color: rgba(255,255,255,.6); } @@ -169,24 +188,27 @@ right: 0.5em; } .ol-zoom { - top: 2.2em; + top: 2.3em; } -#track { +#menu { top: 6em; left: 0.5em; } -.ol-touch #track { +.ol-touch #menu { top: 7em; } +#menu button { + border-radius: 0; +} +#menu button:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; +} +#menu button:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} -.ol-control button svg * { - stroke: white; - stroke-width: 5%; - fill: none; -} -.ol-control button svg .fill { - fill: white; -} .ol-control button.clicked { background-color: black; } diff --git a/map.html b/map.html index 8545a78..be0d733 100644 --- a/map.html +++ b/map.html @@ -5,27 +5,22 @@ <meta charset="utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v5.3.0/css/ol.css" integrity="sha384-C7SzZySesoxngSK5V0BaD1DUap0LPZGWZpnXQGoIwvBXFc8G21y4s1QYvyr84FNa" crossorigin="anonymous"> -<link rel="stylesheet" href="map.css?v4" type="text/css" /> +<link rel="stylesheet" href="map.css?v5" type="text/css" /> <link rel="manifest" href="map.manifest" /> </head> <body> <div id="map"> <div id="title" class="ol-unselectable ol-control"><a href="/">TTSS Kraków</a></div> -<div id="track" class="ol-unselectable ol-control"><button type="button" title="GPS"><svg width="100%" height="100%"> -<circle cx="50%" cy="50%" r="25%"></circle> -<circle cx="50%" cy="50%" r="10%" class="fill"></circle> -<line x1="50%" y1="25%" x2="50%" y2="10%"></line> -<line x1="75%" y1="50%" x2="90%" y2="50%"></line> -<line x1="50%" y1="75%" x2="50%" y2="90%"></line> -<line x1="25%" y1="50%" x2="10%" y2="50%"></line> -</svg></button></div> <div id="fail" class="ol-unselectable ol-control"><span></span> <span class="close">×</p></div> +<div id="menu" class="ol-unselectable ol-control"> +<button id="track" type="button" title="GPS"><span class="icon-loc reverse"></span></button> +</div> </div> <div id="panel"></div> <script src="https://polyfill.io/v3/polyfill.min.js?features=Array.prototype.forEach,Array.prototype.includes,Array.prototype.map,Element.prototype.classList,Promise,String.prototype.startsWith,XMLHttpRequest,requestAnimationFrame"></script> <script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v5.3.0/build/ol.js" integrity="sha384-iQkGyyH4ioz3m+maM3s9MX1Oq67mACa4B9Z3ovUv3Sv37LJ96fx3WnZfLoiC3Wfl" crossorigin="anonymous"></script> <script tyle="text/javascript" src="lang_pl.js?v9" id="lang_script"></script> <script tyle="text/javascript" src="common.js?v10"></script> -<script tyle="text/javascript" src="map.js?v23"></script> +<script tyle="text/javascript" src="map.js?v24"></script> </body> </html> diff --git a/map.js b/map.js index 1bbd8c2..07f2361 100644 --- a/map.js +++ b/map.js @@ -594,7 +594,7 @@ })}, 10); }; showOnMapElement.addEventListener('click', showOnMapFunction); - showOnMapElement.className = 'icon-zoom pad-left-icon'; + showOnMapElement.className = 'icon-pin addon-icon'; showOnMapElement.title = lang.show_on_map; if(additional) { @@ -839,9 +839,9 @@ geolocation_layer = new ol.layer.Vector({ source: geolocation_source, }); - geolocation_button = document.querySelector('#track button'); + geolocation_button = document.querySelector('#track'); if(!navigator.geolocation) { - geolocation_button.classList.add('hidden'); + geolocation_button.remove(); } geolocation = new ol.Geolocation({projection: 'EPSG:3857'}); @@ -866,7 +866,7 @@ geolocation.on('error', function(error) { fail(lang.error_location + ' ' + error.message); trackingStop(); - geolocation_button.classList.add('hidden'); + geolocation_button.remove(); }); geolocation_button.addEventListener('click', trackingToggle); @@ -904,7 +904,7 @@ element: fail_element, }), new ol.control.Control({ - element: document.getElementById('track'), + element: document.getElementById('menu'), }), ]), loadTilesWhileAnimating: false, -- Gitblit v1.9.1