A map with linked charts, in one link
The map spec's charts list opens chart panels beside the map when the link opens. Each chart names its layer, its fields and its look; the numbers are counted from the live layer in the browser, so the link stays short and carries no data. The map colours the ten states with the most incidents and the bar chart takes the same colours; hovering a bar highlights that state's incidents and clicking it zooms to them.
What it shows off
- "charts": two chart panels, docked right and bottom, each linked to layers[0]
- "palette" left at inherit: the bars take the map's category colours, so a state looks the same in both
- "topN": 10 with the rest grouped as Other, matching the map's ten categories
- "theme": "futuristic": the HUD chart look on a dark skin and basemap
- A readable #map=json: link that a chat-only model can write by hand, with no record data in it
Ask a chatbot
Any chatbot can write this one; it needs the layer's field names, which it can read with ?f=pjson or be given:
Make a GISMap Online (https://gismap.online) link of current U.S. wildfire incidents with a linked chart dashboard. Layer: https://services9.arcgis.com/RHVPKKiFTONKtxq3/ArcGIS/rest/services/USA_Wildfires_v1/FeatureServer/0. Colour the points by POOState (a "categories" renderer, maxCategories 10). Add two charts in the map spec's "charts" list: a bar chart "Incidents by state" grouped by POOState, counting features, top 10, docked right; and a compact column chart of DailyAcres summed by IncidentTypeCategory (WF is wildfire, RX prescribed fire), docked bottom. Use the futuristic chart theme, the dark-analytical skin and the dark-gray-vector basemap. Write it as one map-v1 spec (https://gismap.online/schemas/map-v1.schema.json), URI-encode it after https://gismap.online/#map=json: and give me the link. Do not put any counts in the link; the app computes them.
For a code-running agent
An agent can check the fields, validate the charts with the map and make the link. A chart whose field or layer is wrong is left out with a warning, so read the issues before sharing.
import { sources, mapSpec } from "https://gismap.online/js/gismap-core.js";
const url = "https://services9.arcgis.com/RHVPKKiFTONKtxq3/ArcGIS/rest/services/USA_Wildfires_v1/FeatureServer/0";
const { fields } = await sources.inspect(url); // POOState, IncidentTypeCategory, DailyAcres…
const spec = {
version: 1, basemap: "dark-gray-vector", skin: "dark-analytical",
layers: [{ url, renderer: { type: "categories", field: "POOState", maxCategories: 10 } }],
charts: [
{ type: "bar", title: "Incidents by state", layer: 0, dimension: "POOState", style: { topN: 10, theme: "futuristic" } },
{ type: "column", layer: 0, dimension: "IncidentTypeCategory", measure: { field: "DailyAcres", aggregation: "sum" }, placement: "bottom", size: "compact" },
],
};
const { valid, issues } = mapSpec.validate(spec); // a chart with a bad field or layer is reported here
const { url: link } = await mapSpec.createLink(spec, { compress: false }); // the readable #map=json: formIn a running GISMap Online page, gisMapOnline.mapSpec.fromCurrent() writes the open chart panels back into charts, so a dashboard made in the app can be shared the same way.
The result

Open the U.S. wildfire incidents with linked charts in GISMap Online. Everything it needs is in the link (1,160 characters): no account, no server, no upload.
Map spec with the charts (JSON)
Show the full link
https://gismap.online/#map=json:%7B%22version%22%3A1%2C%22title%22%3A%22U.S.%20wildfire%20incidents%20by%20state%22%2C%22basemap%22%3A%22dark-gray-vector%22%2C%22skin%22%3A%22dark-analytical%22%2C%22layers%22%3A%5B%7B%22url%22%3A%22https%3A%2F%2Fservices9.arcgis.com%2FRHVPKKiFTONKtxq3%2FArcGIS%2Frest%2Fservices%2FUSA_Wildfires_v1%2FFeatureServer%2F0%22%2C%22title%22%3A%22Current%20wildfire%20incidents%22%2C%22renderer%22%3A%7B%22type%22%3A%22categories%22%2C%22field%22%3A%22POOState%22%2C%22maxCategories%22%3A10%7D%7D%5D%2C%22charts%22%3A%5B%7B%22type%22%3A%22bar%22%2C%22title%22%3A%22Incidents%20by%20state%22%2C%22layer%22%3A0%2C%22dimension%22%3A%22POOState%22%2C%22placement%22%3A%22right%22%2C%22style%22%3A%7B%22topN%22%3A10%2C%22theme%22%3A%22futuristic%22%7D%7D%2C%7B%22type%22%3A%22column%22%2C%22title%22%3A%22Acres%20burned%20today%3A%20wildfire%20or%20prescribed%22%2C%22layer%22%3A0%2C%22dimension%22%3A%22IncidentTypeCategory%22%2C%22measure%22%3A%7B%22field%22%3A%22DailyAcres%22%2C%22aggregation%22%3A%22sum%22%7D%2C%22placement%22%3A%22bottom%22%2C%22size%22%3A%22compact%22%2C%22style%22%3A%7B%22theme%22%3A%22futuristic%22%7D%7D%5D%7DCheck before you share
- The incidents are a live feed: counts and acres change through the day, and the chart shows what the layer holds when the link is opened.
- Incidents include prescribed fires (IncidentTypeCategory RX) as well as wildfires (WF); filter with "where": "IncidentTypeCategory = 'WF'" for wildfires only.
- DailyAcres is empty for many incidents, so the acres chart sums only the incidents that report it.
- POOState is the state of the point of origin, written like US-CA.