better fix for geojson objects

This commit is contained in:
Dave Conway-Jones 2023-07-29 15:56:22 +01:00
parent 754c1e8d97
commit 4eb745401c
No known key found for this signature in database
GPG Key ID: 1DDB0E91A28C2643
4 changed files with 24 additions and 8 deletions

View File

@ -1,5 +1,6 @@
### Change Log for Node-RED Worldmap ### Change Log for Node-RED Worldmap
- v2.38.2 - Better fix for geojson multipoint icons.
- v2.38.1 - Fix for geojson multipoint icons. - v2.38.1 - Fix for geojson multipoint icons.
- v2.38.0 - Return client headers as part of connect message. - v2.38.0 - Return client headers as part of connect message.
- v2.37.4 - Fix sessionid specific data not to be sent on reload/refresh - v2.37.4 - Fix sessionid specific data not to be sent on reload/refresh

View File

@ -13,6 +13,7 @@ Feel free to [![](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%
### Updates ### Updates
- v2.38.2 - Better fix for geojson multipoint icons.
- v2.38.1 - Fix for geojson multipoint icons. - v2.38.1 - Fix for geojson multipoint icons.
- v2.38.0 - Return client headers as part of connect message. - v2.38.0 - Return client headers as part of connect message.
- v2.37.4 - Fix sessionid specific data not to be sent on reload/refresh - v2.37.4 - Fix sessionid specific data not to be sent on reload/refresh

View File

@ -1,6 +1,6 @@
{ {
"name": "node-red-contrib-web-worldmap", "name": "node-red-contrib-web-worldmap",
"version": "2.38.1", "version": "2.38.2",
"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": {
"@turf/bezier-spline": "~6.5.0", "@turf/bezier-spline": "~6.5.0",

View File

@ -2853,6 +2853,21 @@ function doGeojson(n,g,l,o) {
className: "natoicon", className: "natoicon",
}); });
} }
else if (feature.properties["marker-symbol"].substr(0,3) === "fa-") {
try {
var col = feature.properties["marker-color"] ?? "#910000";
var imod = "";
if (feature.properties["marker-symbol"].indexOf(" ") === -1) { imod = "fa-2x "; }
myMarker = L.divIcon({
className:"faicon",
html: '<center><i class="fa fa-fw '+imod+feature.properties["marker-symbol"]+'" style="color:'+col+'"></i></center>',
iconSize: [32, 32],
iconAnchor: [16, 12],
popupAnchor: [0, -16]
});
}
catch(e) { console.log(e); }
}
else { else {
myMarker = L.VectorMarkers.icon({ myMarker = L.VectorMarkers.icon({
icon: feature.properties["marker-symbol"] ?? "circle", icon: feature.properties["marker-symbol"] ?? "circle",
@ -2867,20 +2882,19 @@ function doGeojson(n,g,l,o) {
if (feature.properties.hasOwnProperty("url")) { if (feature.properties.hasOwnProperty("url")) {
feature.properties.url = "<a target='_new' href='"+feature.properties.url+"'>"+feature.properties.url+"</a>"; feature.properties.url = "<a target='_new' href='"+feature.properties.url+"'>"+feature.properties.url+"</a>";
} }
if (feature.geometry.hasOwnProperty("type") && feature.geometry.type !== "MultiPoint") {
delete feature.properties["marker-symbol"];
delete feature.properties["marker-color"];
delete feature.properties["marker-size"];
}
var nf = {title:feature.properties.title, name:feature.properties.name}; var nf = {title:feature.properties.title, name:feature.properties.name};
feature.properties = Object.assign(nf, feature.properties); feature.properties = Object.assign(nf, feature.properties);
return L.marker(latlng, {title:feature.properties.title ?? "", icon:myMarker}); return L.marker(latlng, {title:feature.properties.title ?? "", icon:myMarker});
} }
opt.onEachFeature = function (f,l) { opt.onEachFeature = function (f,l) {
if (f.properties && Object.keys(f.properties).length > 0) { if (f.properties && Object.keys(f.properties).length > 0) {
var tx = JSON.stringify(f.properties,null,' '); var tx = JSON.parse(JSON.stringify(f.properties,null,' '));
delete tx["marker-symbol"];
delete tx["marker-color"];
delete tx["marker-size"];
tx = JSON.stringify(tx,null,' ');
if ( tx !== "{}") { if ( tx !== "{}") {
l.bindPopup('<pre style="overflow-x: scroll">'+JSON.stringify(f.properties,null,' ').replace(/[\{\}"]/g,'')+'</pre>'); l.bindPopup('<pre style="overflow-x: scroll">'+tx.replace(/[\{\}"]/g,'')+'</pre>');
} }
} }
if (o && o.hasOwnProperty("clickable") && o.clickable === true) { if (o && o.hasOwnProperty("clickable") && o.clickable === true) {