let speed have units

This commit is contained in:
Dave Conway-Jones 2021-05-26 13:34:34 +01:00
parent 3a5022e360
commit ae359e37d0
No known key found for this signature in database
GPG Key ID: 88BA2B8A411BE9FF
4 changed files with 18 additions and 8 deletions

View File

@ -1,6 +1,7 @@
### Change Log for Node-RED Worldmap ### Change Log for Node-RED Worldmap
- v2.14.0 - Let geojson features be clickable if added as overlay - v2.15.0 - let speed be text and specify units if required (kt,kn,knots,mph,kmh,kph) default m/s.
- v2.14.0 - Let geojson features be clickable if added as overlay.
- v2.13.4 - Fix list of map choices to be in sync. Fix popup auto sizing. - v2.13.4 - Fix list of map choices to be in sync. Fix popup auto sizing.
- v2.13.3 - Fix unchanged layer propagation. - v2.13.3 - Fix unchanged layer propagation.
- v2.13.2 - Add mayflower icon. - v2.13.2 - Add mayflower icon.

View File

@ -11,14 +11,15 @@ map web page for plotting "things" on.
### Updates ### Updates
- v2.14.0 - Let geojson features be clickable if added as overlay - v2.15.0 - let speed be text and specify units if required (kt,kn,knots,mph,kmh,kph) default m/s.
- v2.14.0 - Let geojson features be clickable if added as overlay.
- v2.13.4 - Fix list of map choices to be in sync. Fix popup auto sizing. - v2.13.4 - Fix list of map choices to be in sync. Fix popup auto sizing.
- v2.13.3 - Fix unchanged layer propagation. - v2.13.3 - Fix unchanged layer propagation.
- v2.13.2 - Add mayflower icon. - v2.13.2 - Add mayflower icon.
- v2.13.0 - Tidy velocity layer. Feedback any url parameters. - v2.13.0 - Tidy velocity layer. Feedback any url parameters.
- v2.12.1 - Only show online layer options if we are online. - v2.12.1 - Only show online layer options if we are online.
- v2.12.0 - Add live rainfall radar data layer. Remove some non-loading overlays. - v2.12.0 - Add live rainfall radar data layer. Remove some non-loading overlays.
- v2.11.2 - Allow thicknesss of arc to be specified by weight - v2.11.2 - Allow thicknesss of arc to be specified by weight.
- v2.11.1 - Better handle KML point info - add popup. - v2.11.1 - Better handle KML point info - add popup.
- v2.11.0 - Add option to smooth tracks using bezier curves. - v2.11.0 - Add option to smooth tracks using bezier curves.
- v2.10.0 - Save latest position to browser for refresh if in iframe/dashboard. Allow fractional Zoom levels. - v2.10.0 - Save latest position to browser for refresh if in iframe/dashboard. Allow fractional Zoom levels.

View File

@ -1,6 +1,6 @@
{ {
"name": "node-red-contrib-web-worldmap", "name": "node-red-contrib-web-worldmap",
"version": "2.14.0", "version": "2.15.0",
"description": "A Node-RED node to provide a web page of a world map for plotting things on.", "description": "A Node-RED node to provide a web page of a world map for plotting things on.",
"dependencies": { "dependencies": {
"cgi": "0.3.1", "cgi": "0.3.1",

View File

@ -94,7 +94,7 @@ var connect = function() {
}; };
ws.onmessage = function(e) { ws.onmessage = function(e) {
try { var data = JSON.parse(e.data); handleData(data); } try { var data = JSON.parse(e.data); handleData(data); }
catch (e) { console.log("BAD DATA"); return; } catch (e) { if (data) { console.log("BAD DATA",data); } }
// console.log("DATA",typeof data,data); // console.log("DATA",typeof data,data);
}; };
} }
@ -1750,7 +1750,7 @@ function setMarker(data) {
// remove icon from list of properties, then add all others to popup // remove icon from list of properties, then add all others to popup
if (data.hasOwnProperty("alt")) { data.alt = (1*data.alt).toFixed(2); } if (data.hasOwnProperty("alt")) { data.alt = (1*data.alt).toFixed(2); }
if (data.hasOwnProperty("speed")) { data.speed = (1*data.speed).toFixed(2); } //if (data.hasOwnProperty("speed")) { data.speed = parseFloat(data.speed).toFixed(2); }
if (data.hasOwnProperty("SIDC") && data.hasOwnProperty("options")) { delete data.options; } if (data.hasOwnProperty("SIDC") && data.hasOwnProperty("options")) { delete data.options; }
if (data.hasOwnProperty("icon")) { delete data.icon; } if (data.hasOwnProperty("icon")) { delete data.icon; }
if (data.hasOwnProperty("iconColor")) { delete data.iconColor; } if (data.hasOwnProperty("iconColor")) { delete data.iconColor; }
@ -1856,7 +1856,7 @@ function setMarker(data) {
else { words = words + marker.getLatLng().toString().replace('LatLng(','lat, lon : ').replace(')',''); } else { words = words + marker.getLatLng().toString().replace('LatLng(','lat, lon : ').replace(')',''); }
words = "<b>"+data.name+"</b><br/>" + words; //"<button style=\"border-radius:4px; float:right; background-color:lightgrey;\" onclick='popped=false;popmark.closePopup();'>X</button><br/>" + words; words = "<b>"+data.name+"</b><br/>" + words; //"<button style=\"border-radius:4px; float:right; background-color:lightgrey;\" onclick='popped=false;popmark.closePopup();'>X</button><br/>" + words;
var wopt = {autoClose:false, closeButton:true, closeOnClick:false, minWidth:200}; var wopt = {autoClose:false, closeButton:true, closeOnClick:false, minWidth:200};
if (words.indexOf('<video ') >=0 || words.indexOf('<img ') >=0 ) { wopt.maxWidth="auto"; } if (words.indexOf('<video ') >=0 || words.indexOf('<img ') >=0 ) { wopt.maxWidth="640"; }
marker.bindPopup(words, wopt); marker.bindPopup(words, wopt);
marker._popup.dname = data.name; marker._popup.dname = data.name;
marker.lay = lay; // and the layer it is on marker.lay = lay; // and the layer it is on
@ -1875,7 +1875,15 @@ function setMarker(data) {
else if (data.heading !== undefined) { track = data.heading; } else if (data.heading !== undefined) { track = data.heading; }
else if (data.bearing !== undefined) { track = data.bearing; } else if (data.bearing !== undefined) { track = data.bearing; }
if (track != undefined) { // if there is a heading if (track != undefined) { // if there is a heading
if (data.speed != null) { data.length = parseFloat(data.speed || "0") * 60; } // and a speed if (data.speed != null && !data.length) { // and a speed - lets convert to a leader length
data.length = parseFloat(data.speed || "0") * 60;
var re1 = new RegExp('kn|knot|kt','i');
var re2 = new RegExp('kph|kmh','i');
var re3 = new RegExp('mph','i');
if ( re1.test(""+data.speed) ) { data.length = data.length * 0.514444; }
else if ( re2.test(""+data.speed) ) { data.length = data.length * 0.44704; }
else if ( re3.test(""+data.speed) ) { data.length = data.length * 0.277778; }
}
if (data.length != null) { if (data.length != null) {
if (polygons[data.name] != null && !polygons[data.name].hasOwnProperty("_layers")) { if (polygons[data.name] != null && !polygons[data.name].hasOwnProperty("_layers")) {
map.removeLayer(polygons[data.name]); map.removeLayer(polygons[data.name]);