For World, use the supplied geometry keys such as USA or CAN; for US, use keys such as FL. Labels are display names, not join keys. Custom Regions.Key must exactly match each GeoJSON feature’s properties.name. Locations use independent keys, Longitude from −180 to 180, Latitude from −90 to 90 and nonnegative Value. Region and location keys must not collide. Bind MapMode to Regions, Locations or Combined.
Create your own GetChartData Data Action or Server Action, authorize its query and return the typed Lists above. If an Aggregate returns entity records, map them explicitly into these public Structures using a For Each, Assign and ListAppend. Only bind a query result directly when its type already matches. The chart does not query your database.
Regions · BluChartMapRegion List · sample records and mapping
Create a screen local Regions of type BluChartMapRegion List. In your mapping action, use a temporary RowRegions of type BluChartMapRegion. Fill every field used by this chart before appending each row.
ListClear(List: Regions)
For Each source record in your ordered query result:
Assign RowRegions fields from that record
ListAppend(List: Regions, Element: RowRegions)
Example Assign values for the first sample row:
RowRegions.Key = "USA"
RowRegions.Label = "United States"
RowRegions.Value = 840
RowRegions.Color.Mode = Entities.ChartColorMode.Automatic
RowRegions.Color.ThemeColor = Entities.ComponentColor.Primary
RowRegions.Color.Hex = ""
RowRegions.IsMissing = False
The loop describes your action flow, not code to paste into a JavaScript node. Replace the sample literals with your query fields. Reset optional fields on every iteration so values do not carry over from the previous row.
For a quick fixture, use JSON Deserialize with Data Type BluChartMapRegion List, then assign its Data output to Regions. In the JSONString expression editor, wrap the copied JSON in a Text literal and double embedded quotes, or read it from a Text variable. The resulting Block input remains a typed List.
[
{
"Key": "USA",
"Label": "United States",
"Value": 840,
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
},
"IsMissing": false
},
{
"Key": "CAN",
"Label": "Canada",
"Value": 340,
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
},
"IsMissing": false
},
{
"Key": "BRA",
"Label": "Brazil",
"Value": 220,
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
},
"IsMissing": false
},
{
"Key": "GBR",
"Label": "United Kingdom",
"Value": 460,
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
},
"IsMissing": false
},
{
"Key": "DEU",
"Label": "Germany",
"Value": 380,
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
},
"IsMissing": false
},
{
"Key": "FRA",
"Label": "France",
"Value": 310,
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
},
"IsMissing": false
},
{
"Key": "IND",
"Label": "India",
"Value": 520,
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
},
"IsMissing": false
},
{
"Key": "AUS",
"Label": "Australia",
"Value": 290,
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
},
"IsMissing": false
}
]
Locations · BluChartMapLocation List · sample records and mapping
Create a screen local Locations of type BluChartMapLocation List. In your mapping action, use a temporary RowLocations of type BluChartMapLocation. Fill every field used by this chart before appending each row.
ListClear(List: Locations)
For Each source record in your ordered query result:
Assign RowLocations fields from that record
ListAppend(List: Locations, Element: RowLocations)
Example Assign values for the first sample row:
RowLocations.Key = "new-york"
RowLocations.Label = "New York"
RowLocations.Longitude = -74.01
RowLocations.Latitude = 40.71
RowLocations.Value = 90
RowLocations.Color.Mode = Entities.ChartColorMode.Automatic
RowLocations.Color.ThemeColor = Entities.ComponentColor.Primary
RowLocations.Color.Hex = ""
The loop describes your action flow, not code to paste into a JavaScript node. Replace the sample literals with your query fields. Reset optional fields on every iteration so values do not carry over from the previous row.
For a quick fixture, use JSON Deserialize with Data Type BluChartMapLocation List, then assign its Data output to Locations. In the JSONString expression editor, wrap the copied JSON in a Text literal and double embedded quotes, or read it from a Text variable. The resulting Block input remains a typed List.
[
{
"Key": "new-york",
"Label": "New York",
"Longitude": -74.01,
"Latitude": 40.71,
"Value": 90,
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
}
},
{
"Key": "london",
"Label": "London",
"Longitude": -0.12,
"Latitude": 51.51,
"Value": 70,
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
}
},
{
"Key": "mumbai",
"Label": "Mumbai",
"Longitude": 72.88,
"Latitude": 19.08,
"Value": 65,
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
}
},
{
"Key": "sydney",
"Label": "Sydney",
"Longitude": 151.21,
"Latitude": -33.87,
"Value": 50,
"Color": {
"Mode": "Automatic",
"ThemeColor": "Primary",
"Hex": ""
}
}
]
Use a custom GeoJSON resource
Add a GeoJSON FeatureCollection as a Resource in your consumer and deploy it to the application directory. Bind MapSource = Entities.ChartMapSource.Resource and MapResourceURL = Resources.YourMap.URL, using the actual resource name from Service Studio. Leave MapGeometryJSON blank. For inline data, select Entities.ChartMapSource.Inline, supply MapGeometryJSON as Text and leave MapResourceURL blank.
Each feature needs a unique properties.name matching Regions.Key and valid Polygon or MultiPolygon geometry. The browser must be able to retrieve a resource URL; check deployment, access and CORS when hosting externally. Built-in World/US maps must leave both custom-source fields blank.