# Worldmap tracks shows old value

**URL:** <https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328>\
**Category:** Dashboard\
**Tags:** node-red-contrib-web-worldmap\
**Created:** [11 March 2024 08:28 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328 "2024-03-11T08:28:17Z")\
**Posts on this page:** 14\
**Page:** 2

<div class="post-metadata">

**Author:** ![zenofmud](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/zenofmud/32/316_2.png) [@zenofmud](https://discourse.nodered.org/u/zenofmud)\
**Post date:** [12 March 2024 10:24 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328/21 "2024-03-12T10:24:05Z")

</div>

Your `tracks` function node has a problem. Your code is this:

```auto
var payload = msg.payload;
var Tracks = [];

// Check if payload is 'reset' and reset Tracks array
if (payload === 'reset') {
    Tracks = [];
    msg.payload =         
        msg.payload = [
            { "name": "tracks", "deleted": true },
            { "name": "tracks_", "deleted": true }
        ];

} else {
    // Iterate over each object in the payload
    for (var i = 0; i < payload.length; i++) {
        var currentData = payload[i];

        // Extract latitude and longitude values
        if (currentData._field === "Latitude") {
            // Find the corresponding longitude data
            var longitudeData = payload.find(data => (
                data._time === currentData._time &&
                data._field === "Longitude"
            ));

            // If longitude data is found, create a track
            if (longitudeData) {
                var track = {
                    'name': 'tracks',
                    'lat': parseFloat(currentData._value),
                    'lon': parseFloat(longitudeData._value),
                    //'icon': 'uav',
                   // 'iconColor': 'blue',
                    'layer': 'tracks',
                    //'popped': false
                };

                Tracks.push(track);
                 }
            }
        }
    }

// Create a new message containing the generated tracks
var newMsg = {
    payload: Tracks
};

return newMsg;

```

First off, in the `// Check if payload is 'reset' and reset Tracks array` section you are setting msg.payload to msg.payload. Then at the end of the code, you create a `newMsg` and set the payload to `Tracks`. But the reset code needs to send the msg.payload you already set.

Try this code, ift the incoming payload is `reset`, it sets up msg.payload and then returns the msg ignoring the rest of the code in the function.

```auto
var payload = msg.payload;
var Tracks = [];

// Check if payload is 'reset' and reset Tracks array
if (payload === 'reset') {
    msg.payload = { "name": "tracks_", "deleted": true }
    return msg
} else {
    // Iterate over each object in the payload
    for (var i = 0; i < payload.length; i++) {
        var currentData = payload[i];

        // Extract latitude and longitude values
        if (currentData._field === "Latitude") {
            // Find the corresponding longitude data
            var longitudeData = payload.find(data => (
                data._time === currentData._time &&
                data._field === "Longitude"
            ));

            // If longitude data is found, create a track
            if (longitudeData) {
                var track = {
                    'name': 'tracks',
                    'lat': parseFloat(currentData._value),
                    'lon': parseFloat(longitudeData._value),
                    //'icon': 'uav',
                   // 'iconColor': 'blue',
                    'layer': 'tracks',
                    //'popped': false
                };

                Tracks.push(track);
                 }
            }
        }
    }

// Create a new message containing the generated tracks
var newMsg = {
    payload: Tracks
};

return newMsg;

```

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [12 March 2024 11:20 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328/22 "2024-03-12T11:20:26Z")

</div>

There is indeed a bug in the layer deletion logic in that while it deletes the visible layer - it fails to remove the points from the local cache so a refresh just redraws the data.

Version v4.6.4 inbound

---

<div class="post-metadata">

**Author:** ![Asad.Khan](https://avatars.discourse-cdn.com/v4/letter/a/e95f7d/32.png) [@Asad.Khan](https://discourse.nodered.org/u/Asad.Khan)\
**Post date:** [12 March 2024 11:31 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328/23 "2024-03-12T11:31:37Z")

</div>

Any idea how can this bug be fixed?

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [12 March 2024 11:33 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328/24 "2024-03-12T11:33:36Z")

</div>

Fix uploaded just now...

---

<div class="post-metadata">

**Author:** ![Asad.Khan](https://avatars.discourse-cdn.com/v4/letter/a/e95f7d/32.png) [@Asad.Khan](https://discourse.nodered.org/u/Asad.Khan)\
**Post date:** [12 March 2024 11:40 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328/25 "2024-03-12T11:40:37Z")

</div>

This is a bit complex code, but trust me the issue is not with the code. i am facing this issue for a quiet a long period of time with all my flows, In this flow i am fetching data from influxdb. In the other flows i am just doing real time tracking of drone using the below code. I face the same issue with the below code. If i do two different tracking one after an other, it shows tracks of previos flight although i reomved them from map.

```auto
var payload = msg.payload;
var topic = msg.topic;

if (topic = "+/+/telemetry"){
    var x = msg.payload.Latitude;
    var y = msg.payload.Longitude;
    var spd = msg.payload.GroundSpeed;
    var crs = msg.payload.Course;
    var alt = msg.payload.AltitudeMSL;
    var wind = msg.payload.Wind;
    var yaw = msg.payload.Yaw;
    var pitch = msg.payload.Pitch;
    var roll = msg.payload.Roll;
    var rssi = msg.payload.RSSI;

    
    
    msg.payload = {
        'name': 'Kimino',
        'lat' : x,
        'lon': y,
        'alt': alt,
        'speed': spd,
        'heading': crs,
        'Wind': wind,
        'yaw': yaw,
        'pitch': pitch,
        'roll': roll,
        'Rssi': rssi,
        'icon': 'uav',
        'iconColor': 'blue',
        'layer': 'pos',
        'popped': false
    }
    node.send(msg);
    
}

return msg;

```

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [12 March 2024 11:46 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328/26 "2024-03-12T11:46:39Z")

</div>

Yes - have you tried the latest worldmap version 4.6.4 ? As I said there is/was a bug that meant although you deleted the layer - it was only partially deleted internally - so would reappear... now fixed to fully delete from the internal cache.

---

<div class="post-metadata">

**Author:** ![Asad.Khan](https://avatars.discourse-cdn.com/v4/letter/a/e95f7d/32.png) [@Asad.Khan](https://discourse.nodered.org/u/Asad.Khan)\
**Post date:** [12 March 2024 13:19 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328/27 "2024-03-12T13:19:31Z")

</div>

I have updated my worldmap node to latest version 4.6.4 and still facing the same issue.

 ![map](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/c/0/c07131a4d969d239bd6481b520b2388cee1c1dc7.png)

In the debug window you can see that 4 layes are added and then the 4 layers are removed including the tracks layers but when i fetch data of new flight the tracks of old flight still reapears in the map.

 ![reset](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/0/4/0499c70d59ef9fbf94ef05af6dcaaf12413dc286.png)

---

<div class="post-metadata">

**Author:** ![zenofmud](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/zenofmud/32/316_2.png) [@zenofmud](https://discourse.nodered.org/u/zenofmud)\
**Post date:** [12 March 2024 13:26 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328/28 "2024-03-12T13:26:49Z")

</div>

Did you fix the code in the tracks function node?  
You might also stop and restart NR.

---

<div class="post-metadata">

**Author:** ![Asad.Khan](https://avatars.discourse-cdn.com/v4/letter/a/e95f7d/32.png) [@Asad.Khan](https://discourse.nodered.org/u/Asad.Khan)\
**Post date:** [12 March 2024 13:50 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328/29 "2024-03-12T13:50:01Z")

</div>

> [@zenofmud](#):
>
> ```auto
> var payload = msg.payload;
> var Tracks = [];
> 
> // Check if payload is 'reset' and reset Tracks array
> if (payload === 'reset') {
> msg.payload = { "name": "tracks_", "deleted": true }
> return msg
> } else {
> // Iterate over each object in the payload
> for (var i = 0; i < payload.length; i++) {
> var currentData = payload[i];
> 
> // Extract latitude and longitude values
> if (currentData._field === "Latitude") {
> // Find the corresponding longitude data
> var longitudeData = payload.find(data => (
> data._time === currentData._time &&
> data._field === "Longitude"
> ));
> 
> // If longitude data is found, create a track
> if (longitudeData) {
> var track = {
> 'name': 'tracks',
> 'lat': parseFloat(currentData._value),
> 'lon': parseFloat(longitudeData._value),
> //'icon': 'uav',
> // 'iconColor': 'blue',
> 'layer': 'tracks',
> //'popped': false
> };
> 
> Tracks.push(track);
> }
> }
> }
> }
> 
> // Create a new message containing the generated tracks
> var newMsg = {
> payload: Tracks
> };
> 
> return newMsg;
> 
> ```

Yes i checked after restarting the node-red but didn't fixed the code. Now i have used your code, now its a bit improved but still i am getting i strange line in the tracks. I will do more testing with my realtime tracking of the drone and update you guys later if that issue is resolved or not.

 ![map](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/0/5/05b131d771f0efdfb7fb8ae4d0d6ca1bbcf7b8b0.png)

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [12 March 2024 14:00 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328/30 "2024-03-12T14:00:59Z")

</div>

Sorry - only just read your code ... not sure that is that way to delete tracks... You should just need to delete the layer or layers using  
`msg.payload = {"command":{"map":{"delete":["waypoints","Homeposition","tracks","destinations"]}}};`

fed into both the tracks node and worldmap node.

---

<div class="post-metadata">

**Author:** ![Asad.Khan](https://avatars.discourse-cdn.com/v4/letter/a/e95f7d/32.png) [@Asad.Khan](https://discourse.nodered.org/u/Asad.Khan)\
**Post date:** [12 March 2024 14:21 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328/31 "2024-03-12T14:21:06Z")

</div>

> [@dceejay](#):
>
> msg.payload = {"command":{"map":{"delete":["waypoints","Homeposition","tracks","destinations"]}}};

Thanks for the hlep. Now everything is working fine for the current flow, based on your suggestions i will do some more testing with my other flows in which i am doing real time tracking of the drones and updaute you guys if i am still facing the issue or not.

Again thanks for the help.

---

<div class="post-metadata">

**Author:** ![zenofmud](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/zenofmud/32/316_2.png) [@zenofmud](https://discourse.nodered.org/u/zenofmud)\
**Post date:** [12 March 2024 15:28 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328/32 "2024-03-12T15:28:14Z")

</div>

@dceejay The Help for the `tracks` node needs to be updated to reflect that. As of v4.6.4 it still says

> To delete a track send a msg.payload containing both the name of the object and set deleted to true - for example msg.payload = { "name":"Fred", "deleted":true }.

> This will also delete the point. If you just want to clear the track set the msg.payload to the name+"_", for example msg.payload = { "name":"Fred_", "deleted":true }

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [12 March 2024 15:49 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328/33 "2024-03-12T15:49:01Z")

</div>

That should still be true of a track (or point)... the command above is for deleting layers - which is what the first question was I think.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [11 April 2024 15:49 UTC](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328/34 "2024-04-11T15:49:05Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

[Previous page](https://discourse.nodered.org/t/worldmap-tracks-shows-old-value/86328.md?page=1)
