Questions about the map in Perspective

Hello I am starting work on the map. I would like to ask more experienced designers for their opinion and guidance.

I plan to make a map for several hundred objects - the main ideas are:

  1. objects in the form of markers
  2. automatic addition of markers on the map
  3. the ability to go to an expanded page after double-clicking - going to a specific page depending on the type of object
  4. marker form - properties colors, etc. depending on the factors of the object, e.g. temperature too high - red too low blue, maybe a gradient?
  5. possibility to approach the most important information without going to the page object, remaining on the map
  6. the ability to get to a point on the map by clicking the navigation button
  7. the ability to call up a window on the map to perform actions on the object, e.g. turn on the light depending on the object clicked.

Problems:
I would like all points to be generated automatically but what way will allow to do it most efficiently? I was thinking of a python script that will build a JSON that will bind to the Ignition map. It would be based on a table with lists of array string objects. This table is retrieved from SQL and automatically updates with new objects.
image

Using these object names, I could refer to their location and all other values contained in the tag provider. What do you guys think about this or do you have any ideas on how this could be started?
Next, I'd like to double-click to bring up a popup window which I've been able to do but how do I display this window depending on the object? To make the values in the window refer to a specific tag provider how to pass the recognition parameter?
The conditions on the object are constantly changing how can I relate the color of the marker to, for example, the temperature. I know you can do bindings but the whole thing is supposed to generate automatically, can you define bindings by implementing JSON through python?
The ability to reach a map point with a button I found in manual map ignition works great.
The invoked window must also be able to perform an action on the object but I guess it's similar to the earlier issue of passing parameters. In addition, I would like to call different popup windows depending on the type of object - they are different objects.

I'm wondering what tools to use (is it geoJSON or the usual markers and polygon, etc.?)and the most difficult seems to be automation. of course, it could be done statically which I've started to do but the amount of work is huge for several hundred objects and new ones keep coming.

I would like to do it in python but I don't know if it is possible, how and if I won't lose time, I haven't done something like this before.

This map looks fantastic and I never thought I would ever be able to do something like this in a SCADA system! Please everyone give me tips and ideas, thank you.

Greetings.

Sounds like you're on the right path.

I would have either a binding to a custom property on the page that would bind to your object list. You can then have an expression with now(30000) let's say that would update the data every 30s. I would add a transformation script that would then fire to grab the object list and parse it into the props.layers.ui.markers property. If you want more responsive updates, then use the tooltip under marker and have a different view query the data faster.

You can add the color changing to the script above and just have it change on update. Just change it at props.layers.ui.markers[0].icon.style

You can use a pop up to bring up more information on the marker. You can do this with either the popup property in the ui of the map, or just by using the onMarkerClick action. Use the marker name as a parameter/UID and query the data at the popup level.

You can use the tooltip property under the marker to pop up a window in the map.

Use the popup property in the marker object to open a view in the map around the marker clicked. Have it pass a UID/name parameter in that view to allow control of your buttons on that location. You can set your parameter when the marker is generated.

Here's JSON of what it can look like. No static bindings, all python scripting.

{
  "name": "test1",
  "properties": {},
  "enabled": true,
  "lat": 38.660867,
  "lng": -123.159728,
  "opacity": 1,
  "icon": {
    "path": "material/location_on",
    "color": "#F75041",
    "size": {
      "width": 36,
      "height": 36
    },
    "style": {
      "classes": "",
      "backgroundColor": "#808080"
    }
  },
  "event": {
    "stopPropagation": false
  },
  "tooltip": {
    "content": {
      "text": "",
      "view": {
        "path": "",
        "params": {}
      }
    },
    "direction": "auto",
    "permanent": false,
    "sticky": false,
    "opacity": 1
  },
  "popup": {
    "enabled": true,
    "content": {
      "text": "",
      "view": {
        "path": "popups/LocationControl",
        "params": {
          "name": "test1"
        }
      }
    },
    "width": {
      "max": 300,
      "min": 50
    },
    "height": {
      "max": null
    },
    "pan": {
      "auto": true
    },
    "closeButton": true,
    "autoClose": true,
    "closeOnEscapeKey": true,
    "closeOnClick": null
  }
}

Hello,
some time ago I added a map to SCADA according to the advice. I applied to it the necessary points and the required functions. However, I need to expand it. The next things I need are:

  1. I would like to mark the wind on the map and allow viewing its speed in some convenient way
  2. I would like it to be possible also to have an overlay, with the possibility of viewing the weather - cloud cover and temperature.
  3. I have also seen the option to select the date for which to display this information in other implementations but these are website projects, we also do not use the webdev module.

My question is if it is possible to do it in a similar way based on the map compnent props?

If so how can this be implemented, does anyone have any examples?
Below is an overview of what I mean from what I found in web:

Wind:

Weather - temperature:

Weather - rain:

Best Regards
Michał

Did anyone figure out how to integrate something like this into the Map Component?