Maps

Manage GeoNode maps, including reading and writing the MapStore blob JSON.


List

geonodectl maps list
geonodectl maps list --search "Hiroshima"
geonodectl maps list --filter owner.username=admin
geonodectl maps list --ordering title

Create

# Create with a title
geonodectl maps create --title "My New Map"

# Create from a JSON file
geonodectl maps create --json_path ./map_metadata.json

# Create with maplayers (space-separated dataset PKs)
geonodectl maps create --title "My Map" --maplayers 36 42 55

Describe

geonodectl maps describe 2073

Patch

geonodectl maps patch 2073 --set '{"title": "Updated Title"}'
geonodectl maps patch 2073 --json_path ./metadata.json

Delete

geonodectl maps delete 2073
geonodectl maps delete 2073,2074,2075

get-blob

Print the MapStore blob JSON for a map. The blob controls the viewer configuration: layers, zoom level, center, styles, featureInfo templates, and widgets.

# Print the full blob
geonodectl maps get-blob 2073

# Extract specific fields with jq
geonodectl maps get-blob 2073 | jq '.map.layers[].name'
geonodectl maps get-blob 2073 | jq '.map.center'
geonodectl maps get-blob 2073 | jq '.map.zoom'

Note: GeoNode omits the blob from the default API response. This command requests it explicitly via ?include[]=blob.


set-blob

Replace the MapStore blob JSON for a map from a JSON file.

geonodectl maps set-blob 2073 --json_path ./blob.json

Typical workflow

# 1. Download the current blob
geonodectl maps get-blob 2073 > blob.json

# 2. Edit blob.json — update styles, center, zoom, add widgets, etc.

# 3. Push it back
geonodectl maps set-blob 2073 --json_path blob.json

Minimal blob structure

The blob JSON must contain both map and maplayers top-level keys:

{
  "version": 2,
  "map": {
    "projection": "EPSG:3857",
    "units": "m",
    "center": {"x": 13.4, "y": 52.5, "crs": "EPSG:4326"},
    "zoom": 10,
    "maxExtent": [-20037508.34, -20037508.34, 20037508.34, 20037508.34],
    "layers": [
      {
        "id": "mapnik__0",
        "group": "background",
        "source": "osm",
        "name": "mapnik",
        "title": "Open Street Map",
        "type": "osm",
        "visibility": true
      }
    ],
    "groups": [{"id": "Default", "title": "Default", "expanded": true}]
  },
  "maplayers": [],
  "widgetsConfig": {"widgets": []},
  "mapInfoConfiguration": {}
}