From 16b92b613f29cf7b1dbdeb3bef59771099695ab0 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Mon, 6 Dec 2021 15:35:24 +0000 Subject: [PATCH] openstreetmap 0.11: Add slight offset to OSM data to align it properly + Fix alignment of satellite info text (fix #984) --- apps.json | 7 ++++--- apps/openstmap/ChangeLog | 2 ++ apps/openstmap/app.js | 4 ++-- apps/openstmap/custom.html | 20 +++++++++++++++++--- apps/openstmap/screenshot.png | Bin 0 -> 5711 bytes 5 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 apps/openstmap/screenshot.png diff --git a/apps.json b/apps.json index e02549843..099209894 100644 --- a/apps.json +++ b/apps.json @@ -1955,11 +1955,12 @@ "id": "openstmap", "name": "OpenStreetMap", "shortName": "OpenStMap", - "version": "0.10", - "description": "[BETA] Loads map tiles from OpenStreetMap onto your Bangle.js and displays a map of where you are", + "version": "0.11", + "description": "Loads map tiles from OpenStreetMap onto your Bangle.js and displays a map of where you are. Once installed this also adds map functionality to `GPS Recorder` and `Recorder` apps", "icon": "app.png", - "tags": "outdoors,gps", + "tags": "outdoors,gps,osm", "supports": ["BANGLEJS","BANGLEJS2"], + "screenshots": [{"url":"screenshot.png"}], "custom": "custom.html", "customConnect": true, "storage": [ diff --git a/apps/openstmap/ChangeLog b/apps/openstmap/ChangeLog index 69c34ed4e..6cb9d061e 100644 --- a/apps/openstmap/ChangeLog +++ b/apps/openstmap/ChangeLog @@ -8,3 +8,5 @@ 0.08: Update for drag event refactor 0.09: Use current theme cols when drawing GPS info 0.10: Improve scale factor calculation to fix scaling issues (#984) +0.11: Add slight offset to OSM data to align it properly (fix #984) + Fix alignment of satellite info text diff --git a/apps/openstmap/app.js b/apps/openstmap/app.js index c33acd8ad..62597ca20 100644 --- a/apps/openstmap/app.js +++ b/apps/openstmap/app.js @@ -25,11 +25,11 @@ function drawMarker() { var fix; Bangle.on('GPS',function(f) { fix=f; - g.reset().clearRect(0,y1,240,y1+8).setFont("6x8").setFontAlign(0,0); + g.reset().clearRect(0,y1,g.getWidth()-1,y1+8).setFont("6x8").setFontAlign(0,0); var txt = fix.satellites+" satellites"; if (!fix.fix) txt += " - NO FIX"; - g.drawString(txt,120,y1 + 4); + g.drawString(txt,g.getWidth()/2,y1 + 4); drawMarker(); }); Bangle.setGPSPower(1, "app"); diff --git a/apps/openstmap/custom.html b/apps/openstmap/custom.html index eeb148f54..56dea1188 100644 --- a/apps/openstmap/custom.html +++ b/apps/openstmap/custom.html @@ -132,8 +132,10 @@ TODO: var zoom = map.getZoom(); var centerlatlon = map.getBounds().getCenter(); var center = map.project(centerlatlon, zoom).divideBy(OSMTILESIZE); - var ox = Math.round((center.x - Math.floor(center.x)) * OSMTILESIZE); - var oy = Math.round((center.y - Math.floor(center.y)) * OSMTILESIZE); + // Reason for 16px adjustment below not 100% known, but it seems to + // align everything perfectly: https://github.com/espruino/BangleApps/issues/984 + var ox = Math.round((center.x - Math.floor(center.x)) * OSMTILESIZE) + 16; + var oy = Math.round((center.y - Math.floor(center.y)) * OSMTILESIZE) + 16; center = center.floor(); // make sure we're in the middle of a tile // JS version of Bangle.js's projection function bproject(lat, lon) { @@ -155,8 +157,15 @@ TODO: var bd = bproject(pd.lat, pd.lng) var scale = bc.distanceTo(bd); - var tileGetters = []; + // test + /*var p = bproject(centerlatlon.lat, centerlatlon.lng); + var q = bproject(mylat, mylon); + var testPt = { + x : (q.x-p.x)/scale + (MAPSIZE/2), + y : (MAPSIZE/2) - (q.y-p.y)/scale + };*/ + var tileGetters = []; // Render everything to a canvas... var canvas = document.getElementById("maptiles"); canvas.style.display=""; @@ -173,6 +182,11 @@ TODO: tileGetters.push(new Promise(function(resolve,reject) { img.onload = function(){ ctx.drawImage(img,i*OSMTILESIZE - ox, j*OSMTILESIZE - oy); + /*if (testPt) { + ctx.fillStyle="green"; + ctx.fillRect(testPt.x-1, testPt.y-5, 3,10); + ctx.fillRect(testPt.x-5, testPt.y-1, 10,3); + }*/ resolve(); }; })); diff --git a/apps/openstmap/screenshot.png b/apps/openstmap/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..2895b562ebb2b8313b232a2422150b60f6c9662c GIT binary patch literal 5711 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 B!2|#R literal 0 HcmV?d00001