Marker map

Marker or locator map with emoji, icons or images for places and an inset map for context

Updated 2 years ago to v7.0.6 by Flourish team

How to use this template

What's it for?

Showing locations on an interactive map. Useful both as a "locator" map to show a few places, or as a "data" map with many markers filterable by category. Places can be marked with emoji, icons from Font Awesome or uploaded images.

How to get started

  1. At a minimum, you just need a spreadsheet of places with columns for latitude and longitude. Point to these columns and your markers will appear on the map!
category latitude longitude
Tube Station -6.081689835 145.3919983
Tube Station -5.207079887 145.7890015
Comment -5.826789856 144.2960052
  1. Next you'll need to style your markers by choosing their image/emoji/icon, colour, etc. This can be done in three ways:
    • If you want all the markers to look the same, just set the default styling in the Markers settings panel
    • If you want to specify individual styles, add columns to your data sheet for marker, size, etc and make sure these are set in the column selection area
    • Or if you want to style markers based categories in the data (see below)

How to specify markers

When entering an marker style in one of the tables or in the settings panel, you have three choices:

  1. Type or copy and paste an emoji
  2. Type in the name of a Font Awesome icon such as "house" or "dog" (you can find a full list of available icons here. You can include or miss out the "fa-" at the start fo the name.
  3. Upload an image, by clicking the image upload button or right-clicking on a spreadsheet cell. Uploaded images can be no larger than 1024×1024 pixels.

Working with categories

If your data has a category column you can style your markers at the category level. First make sure the category column is specified in the main data sheet. Then add a row in the "Categories" data sheet for each category you'd like to style. For example:

Category name Marker
Tube Station 🚇
Comment fa-comment

Customising the inset map

The inset map helps the viewer put the current map view in the context of a larger area: a country in the context of the world, say, or a city in the context of a country. By default, if enabled, the inset map shows a globe. But you can set the map to show any region you like by uploading one or more regions (in GeoJSON format) to the "Inset Map Regions" data sheet. Alternatively, if you just want one or more countries, you can copy the relevant row(s) from Regions datasheet of our Projection Map template.

Not sure how to upload your data to Flourish? See our handy guide

FAQ

I don't have lat or lng locations, only place names You'll need to geocode your data. Various online tools that can help with this. Paying customers can contact the Flourish team for more help and advice.

How do I reset the initial zoom and centre of the map? The map automatically sets its initial zoom and centre to contain all your icons. If you want to override this you have two options. First: restrict the bounds of the map (under Base Map > Viewport). Second, create a story: hit the "Create a story" button and drag the map into whatever zoom/pan state you like, and it will be automatically saved. If you don't want the navigation bar at the top, choose "None" from the "Navigation" menu.

How do I change the colour of the icons? Font Awesome icons can be given custom colours using the Colour data bindings or settings. Note that this won't work for emoji or images.

How can I tell a story with my map? If you'd like to give the audience a tour of the data and highlight different locations or regions one by one, create a Flourish story from your visualisation, then add multiple slides to highlight different places, as in the example below.

Examples

Credits

Created by the Flourish team, using open source tools including twemoji by Twitter under CC-BY 4.0.

Want to see additional features? Let us know at support@flourish.studio.

This section documents API usage specific to this template, so for an introduction we suggest you refer to the generic API documentation instead.

template: @flourish/3d-marker-map

version: 7

Template data

There are three different formats in which you can supply data to this template. The most convenient for you to use likely depends on the source of your data, as described below.

1. Array of arrays, and a bindings object

You can supply arrays of arrays to opts.data, which might look like:

{
    data: {
        markers: [
            [ "MarkersColumn1Value1", "MarkersColumn2Value1",
            [ "MarkersColumn1Value2", "MarkersColumn2Value2",
            [ "MarkersColumn1Value3", "MarkersColumn2Value3",
            ...
        ],
        icons: [
            [ "IconsColumn1Value1", "IconsColumn2Value1",
            [ "IconsColumn1Value2", "IconsColumn2Value2",
            [ "IconsColumn1Value3", "IconsColumn2Value3",
            ...
        ],
        regions_map: [
            [ "Regions_mapColumn1Value1", "Regions_mapColumn2Value1",
            [ "Regions_mapColumn1Value2", "Regions_mapColumn2Value2",
            [ "Regions_mapColumn1Value3", "Regions_mapColumn2Value3",
            ...
        ],
        regions: [
            [ "RegionsColumn1Value1", "RegionsColumn2Value1",
            [ "RegionsColumn1Value2", "RegionsColumn2Value2",
            [ "RegionsColumn1Value3", "RegionsColumn2Value3",
            ...
        ]
    }
}

where each array of arrays represents the rows in a data sheet.

To tell the API how the values from each column should be associated with the keys that the template is expecting, you must also supply an object attached to opts.bindings. (The meanings of the keys in the bindings object are documented below.) The minimal bindings you can supply for this template are as shown in this example:

{
    template: "@flourish/3d-marker-map",
    version: "7",
    bindings: {
        markers: {
            lat: 0, // index of a column in your data
            long: 1, // index of a column in your data
        },
        icons: {
            
        },
        regions_map: {
            value: 2, // index of a column in your data
        },
        regions: {
            
        }
    },
    data: {
        markers: [
            [ "MarkersColumn1Value1", "MarkersColumn2Value1",
            [ "MarkersColumn1Value2", "MarkersColumn2Value2",
            [ "MarkersColumn1Value3", "MarkersColumn2Value3",
            ...
        ],
        icons: [
            [ "IconsColumn1Value1", "IconsColumn2Value1",
            [ "IconsColumn1Value2", "IconsColumn2Value2",
            [ "IconsColumn1Value3", "IconsColumn2Value3",
            ...
        ],
        regions_map: [
            [ "Regions_mapColumn1Value1", "Regions_mapColumn2Value1",
            [ "Regions_mapColumn1Value2", "Regions_mapColumn2Value2",
            [ "Regions_mapColumn1Value3", "Regions_mapColumn2Value3",
            ...
        ],
        regions: [
            [ "RegionsColumn1Value1", "RegionsColumn2Value1",
            [ "RegionsColumn1Value2", "RegionsColumn2Value2",
            [ "RegionsColumn1Value3", "RegionsColumn2Value3",
            ...
        ]
    }
}

All possible bindings that you can supply are shown in this example:

{
    template: "@flourish/3d-marker-map",
    version: "7",
    bindings: {
        markers: {
            lat: 0, // index of a column in your data
            long: 1, // index of a column in your data
            image: 2, // index of a column in your data
            name: 3, // index of a column in your data
            description: 4, // index of a column in your data
            photo: 5, // index of a column in your data
            link: 6, // index of a column in your data
            category: 7, // index of a column in your data
            color: 8, // index of a column in your data
            size: 9, // index of a column in your data
            metadata: [10, 11, ...], // index(es) of column(s) in your data
        },
        icons: {
            category_name: 0, // index of a column in your data
            icon: 1, // index of a column in your data
            size: 2, // index of a column in your data
            color: 3, // index of a column in your data
            opacity: 4, // index of a column in your data
        },
        regions_map: {
            geojson: 0, // index of a column in your data
            name: 1, // index of a column in your data
            value: 2, // index of a column in your data
            height: 3, // index of a column in your data
            category: 4, // index of a column in your data
            metadata: [5, 6, ...], // index(es) of column(s) in your data
        },
        regions: {
            geojson: 0, // index of a column in your data
        }
    },
    data: {
        markers: [
            [ "MarkersColumn1Value1", "MarkersColumn2Value1",
            [ "MarkersColumn1Value2", "MarkersColumn2Value2",
            [ "MarkersColumn1Value3", "MarkersColumn2Value3",
            ...
        ],
        icons: [
            [ "IconsColumn1Value1", "IconsColumn2Value1",
            [ "IconsColumn1Value2", "IconsColumn2Value2",
            [ "IconsColumn1Value3", "IconsColumn2Value3",
            ...
        ],
        regions_map: [
            [ "Regions_mapColumn1Value1", "Regions_mapColumn2Value1",
            [ "Regions_mapColumn1Value2", "Regions_mapColumn2Value2",
            [ "Regions_mapColumn1Value3", "Regions_mapColumn2Value3",
            ...
        ],
        regions: [
            [ "RegionsColumn1Value1", "RegionsColumn2Value1",
            [ "RegionsColumn1Value2", "RegionsColumn2Value2",
            [ "RegionsColumn1Value3", "RegionsColumn2Value3",
            ...
        ]
    }
}

2. Array of objects with arbitrary keys, and a bindings object

This format is most likely useful when you have data from an external source, such as CSV data loaded from d3-dsv. You should supply this attached to the opts.data, which might look like:

{
        markers: [
            { "MarkersHeader1": ..., "MarkersHeader2": ..., ... },
            { "MarkersHeader1": ..., "MarkersHeader2": ..., ... },
            { "MarkersHeader1": ..., "MarkersHeader2": ..., ... },
            ...
        ],
        icons: [
            { "IconsHeader1": ..., "IconsHeader2": ..., ... },
            { "IconsHeader1": ..., "IconsHeader2": ..., ... },
            { "IconsHeader1": ..., "IconsHeader2": ..., ... },
            ...
        ],
        regions_map: [
            { "Regions_mapHeader1": ..., "Regions_mapHeader2": ..., ... },
            { "Regions_mapHeader1": ..., "Regions_mapHeader2": ..., ... },
            { "Regions_mapHeader1": ..., "Regions_mapHeader2": ..., ... },
            ...
        ],
        regions: [
            { "RegionsHeader1": ..., "RegionsHeader2": ..., ... },
            { "RegionsHeader1": ..., "RegionsHeader2": ..., ... },
            { "RegionsHeader1": ..., "RegionsHeader2": ..., ... },
            ...
        ]
    }

... but with the keys being the column headers from your source data instead. You must also supply an object attached to opts.bindings. The minimal bindings you can supply for this template are as shown in this example:

{
    template: "@flourish/3d-marker-map",
    version: "7",
    bindings: {
        markers: {
            lat: "MarkersHeader1",
            long: "MarkersHeader2",
        },
        icons: {
            
        },
        regions_map: {
            value: "Regions_mapHeader3",
        },
        regions: {
            
        }
    },
    data: {
        markers: [
            { "MarkersHeader1": ..., "MarkersHeader2": ..., ... },
            { "MarkersHeader1": ..., "MarkersHeader2": ..., ... },
            { "MarkersHeader1": ..., "MarkersHeader2": ..., ... },
            ...
        ],
        icons: [
            { "IconsHeader1": ..., "IconsHeader2": ..., ... },
            { "IconsHeader1": ..., "IconsHeader2": ..., ... },
            { "IconsHeader1": ..., "IconsHeader2": ..., ... },
            ...
        ],
        regions_map: [
            { "Regions_mapHeader1": ..., "Regions_mapHeader2": ..., ... },
            { "Regions_mapHeader1": ..., "Regions_mapHeader2": ..., ... },
            { "Regions_mapHeader1": ..., "Regions_mapHeader2": ..., ... },
            ...
        ],
        regions: [
            { "RegionsHeader1": ..., "RegionsHeader2": ..., ... },
            { "RegionsHeader1": ..., "RegionsHeader2": ..., ... },
            { "RegionsHeader1": ..., "RegionsHeader2": ..., ... },
            ...
        ]
    }
}

All possible bindings that you can supply are shown in this example:

{
    template: "@flourish/3d-marker-map",
    version: "7",
    bindings: {
        markers: {
            lat: "MarkersHeader1",
            long: "MarkersHeader2",
            image: "MarkersHeader3",
            name: "MarkersHeader4",
            description: "MarkersHeader5",
            photo: "MarkersHeader6",
            link: "MarkersHeader7",
            category: "MarkersHeader8",
            color: "MarkersHeader9",
            size: "MarkersHeader10",
            metadata: ["MarkersHeader11", "MarkersHeader12", ...],
        },
        icons: {
            category_name: "IconsHeader1",
            icon: "IconsHeader2",
            size: "IconsHeader3",
            color: "IconsHeader4",
            opacity: "IconsHeader5",
        },
        regions_map: {
            geojson: "Regions_mapHeader1",
            name: "Regions_mapHeader2",
            value: "Regions_mapHeader3",
            height: "Regions_mapHeader4",
            category: "Regions_mapHeader5",
            metadata: ["Regions_mapHeader6", "Regions_mapHeader7", ...],
        },
        regions: {
            geojson: "RegionsHeader1",
        }
    },
    data: {
        markers: [
            { "MarkersHeader1": ..., "MarkersHeader2": ..., ... },
            { "MarkersHeader1": ..., "MarkersHeader2": ..., ... },
            { "MarkersHeader1": ..., "MarkersHeader2": ..., ... },
            ...
        ],
        icons: [
            { "IconsHeader1": ..., "IconsHeader2": ..., ... },
            { "IconsHeader1": ..., "IconsHeader2": ..., ... },
            { "IconsHeader1": ..., "IconsHeader2": ..., ... },
            ...
        ],
        regions_map: [
            { "Regions_mapHeader1": ..., "Regions_mapHeader2": ..., ... },
            { "Regions_mapHeader1": ..., "Regions_mapHeader2": ..., ... },
            { "Regions_mapHeader1": ..., "Regions_mapHeader2": ..., ... },
            ...
        ],
        regions: [
            { "RegionsHeader1": ..., "RegionsHeader2": ..., ... },
            { "RegionsHeader1": ..., "RegionsHeader2": ..., ... },
            { "RegionsHeader1": ..., "RegionsHeader2": ..., ... },
            ...
        ]
    }
}

(As before, the keys containing "Header" would be replaced by column names from your data source.)

3. Array of objects with template-defined keys

There is an alternative format you can use, which is likely to be easier to use if your data is not from a spreadsheet source. With this alternative format you supply your data to the template as an array of objects, attached to opts.data, where the keys must be those used by the template, as documented below. In this case there is no need to supply a bindings object, since the key names are already those expected by the template. The required properties in the data object are as follows (scroll down for a description of what each property is):

{
    template: "@flourish/3d-marker-map",
    version: "7",
    data: {
    markers: [
        {
            lat: ...,
            long: ...,
            metadata: [...]
        },
        ...
    ],
    regions_map: [
        {
            value: ...,
            metadata: [...]
        },
        ...
    ]
},
    ...
}

And the full list of all possible properties is as follows:

{
    template: "@flourish/3d-marker-map",
    version: "7",
    data: {
    markers: [
        {
            lat: ...,
            long: ...,
            image: ...,
            name: ...,
            description: ...,
            photo: ...,
            link: ...,
            category: ...,
            color: ...,
            size: ...,
            metadata: [...]
        },
        ...
    ],
    icons: [
        {
            category_name: ...,
            icon: ...,
            size: ...,
            color: ...,
            opacity: ...
        },
        ...
    ],
    regions_map: [
        {
            geojson: ...,
            name: ...,
            value: ...,
            height: ...,
            category: ...,
            metadata: [...]
        },
        ...
    ],
    regions: [
        {
            geojson: ...
        },
        ...
    ]
},
    ...
}

Meanings of the template data keys:

  • markers.lat: lat
  • markers.long: long
  • markers.image: Can include emojis, Font Awesome icons or uploaded images. Uploaded images can be no larger than 1024×1024 pixels.
  • markers.name: Name of place, shown in popup
  • markers.description: Description of place, shown in popup
  • markers.photo: Photo to be included in popup
  • markers.link: link to be included in popup
  • markers.category: Category of place. Values should match the 'Category' column in the Categories sheet.
  • markers.color: Colour of the icon - this can be a hex value like '#fff', or a web-safe value like 'red'. Note that this is only available for Font Awesome icons.
  • markers.size: size
  • markers.metadata: Extra metadata to show in the popup. Add as many columns as you like.
  • icons.category_name: Values should match the 'Category' column in the Locations sheet, and should not be repeated.
  • icons.icon: Can be a Font Awesome icon name, e.g. 'circle' or 'chevron-right'; an image URL; or an emoji. Images can be no larger than 1024×1024 pixels.
  • icons.size: Amount to scale the icon by.
  • icons.color: Colour of the icon - this can be a hex value like '#fff', or a web-safe value like 'red'. Note that this is only available when using Font Awesome icons, not emoji or uploaded images.
  • icons.opacity: Opacity of the icon between 0 and 1, e.g. 0.5
  • regions_map.geojson: geojson
  • regions_map.name: name
  • regions_map.value: value
  • regions_map.height: height
  • regions_map.category: category
  • regions_map.metadata: metadata
  • regions.geojson: geojson

Template settings

Options for opts.state.

Base map

map.map_type string

Map type.

Allowed values:

  • tiles (Vector)
  • raster (Raster)
  • projection (Projection)

map.style_enabled boolean

Background map.

Allowed values:

  • true (Enabled)
  • false (Disabled)

map.style_base string

Map style.

Allowed values:

  • flourish-light (Flourish Light)
  • flourish-dark (Flourish Dark)
  • flourish-2-tone (Flourish 2-Tone)
  • positron (Positron)
  • osm-bright (OSM Bright)
  • klokantech-basic (Klokantech Basic)
  • klokantech-3d (Klokantech 3D)
  • fiord-color (Fiord)
  • toner (Toner)
  • dark-matter (Dark Matter)
  • custom-monochrome (Custom: Monochrome)
  • custom-palette (Custom: Palette)
  • custom-json (Custom: JSON)

map.style_custom_enabled boolean

Customize layers.

map.style_monochrome_color color

Map base color.

map.style_custom_toner.primary color

Primary.

map.style_custom_toner.secondary color

Secondary.

map.style_custom_json code

Custom JSON style data. Include your own custom mapbox-gl-js style for full control over your maps' appearance. Note that we use tiles that match the OpenMapTiles schema, so it's recommended that you use Maputnik to create your styles.

map.style_custom_palette.ground color

Ground.

map.style_custom_palette.ocean color

Ocean.

map.style_custom_palette.grass color

Nature.

map.style_custom_palette.buildings color

Buildings.

map.style_custom_palette.road color

Roads.

map.style_custom_palette.road_outline color

Road outlines.

map.style_custom_palette.text_fill color

Text.

map.style_custom_palette.text_opacity number

Text opacity.

Max: 1

map.style_custom_palette.text_stroke color

Text outlines.

map.style_custom_palette.halo_opacity number

Outline opacity.

Max: 1

map.style_custom_palette.border color

State/national borders.

map.style_font_face string

Font override. Replace the map's default fonts with a font of your choice.

Allowed values:

  • none (None)
  • layout (Use layout settings)
  • Cabin Sketch
  • Coda
  • Fira Mono
  • Lobster
  • Lora
  • Merriweather
  • Metropolis
  • Montserrat
  • Noto Sans
  • Nunito
  • Open Sans
  • Oswald
  • Overpass Mono
  • Playfair Display
  • PT Sans Narrow
  • PT Sans Caption
  • PT Sans
  • Quicksand
  • Roboto Condensed
  • Roboto
  • Source Sans Pro

map.style_font_weight number

Weight.

Min: 100

Max: 900

map.style_show_borders boolean

Display borders.

map.style_show_roads boolean

Display transport.

map.style_show_labels boolean

Display labels.

map.style_show_landuse boolean

Display land use.

map.style_show_water boolean

Display water.

map.projection_type string

Projection.

Allowed values:

  • Albers (30° & 45°)
  • Albers USA
  • August
  • Azimuthal Equidistant
  • Aitoff
  • Baker
  • Boggs
  • Braun's Stereographic
  • Bromley
  • Craster Parabolic
  • Eckert I
  • Eckert II
  • Eckert III
  • Eckert IV
  • Eckert V
  • Eckert VI
  • Eisenlohr
  • Equirectangular
  • Fahey
  • Foucaut
  • Ginzburg IV
  • Ginzburg V
  • Ginzburg VI
  • Ginzburg VIII
  • Ginzburg IX
  • Gnomonic
  • Hammer
  • Kavrayskiy VII
  • McBryde–Thomas Flat-Polar Parabolic
  • McBryde–Thomas Flat-Polar Quartic
  • McBryde–Thomas Flat-Polar Sinusoidal
  • Miller (modified Mercator)
  • Mollweide
  • Natural Earth I
  • Natural Earth II
  • Orthographic
  • Robinson
  • Sinusoidal
  • Stereographic
  • Wagner IV
  • Wagner VI
  • Winkel Tripel

map.projection_background_color color

Background color.

map.projection_ocean_color color

Ocean color.

map.style_raster.tile_url string

Tile URL.

map.style_raster.scheme string

Tile scheme.

Allowed values:

  • xyz (Web Mercator (xyz))
  • tms (OSGeo (tms))

map.style_raster.tile_size string

Tile size.

Allowed values:

  • 128 (128)
  • 256 (256)
  • 512 (512)
  • 1024 (1024)

map.style_raster.minzoom number

Min. tile zoom.

Max: 22

map.style_raster.maxzoom number

Max. tile zoom.

Max: 22

map.style_raster.attribution text

Tile attribution.

map.map_language_auto boolean

Detect language. Automatically changes the language used on the base map to match the viewer's language settings.

map.map_language_alts boolean

Display alternatives. Whether or not to display latin alternatives for non-latin languages (or vice versa)

map.map_language string

Language.

Allowed values:

  • native (Local language)
  • ar (Arabic)
  • az (Azerbaijani)
  • be (Belarusian)
  • bg (Bulgarian)
  • br (Breton)
  • bs (Bosnian)
  • ca (Catalan)
  • cs (Czech)
  • cy (Welsh)
  • da (Danish)
  • de (German)
  • el (Greek)
  • en (English)
  • eo (Esperanto)
  • es (Spanish)
  • et (Estonian)
  • fi (Finnish)
  • fr (French)
  • fy (Western Frisian)
  • ga (Irish)
  • gd (Scottish Gaelic)
  • he (Hebrew)
  • hr (Croatian)
  • hu (Hungarian)
  • hy (Armenian)
  • is (Icelandic)
  • it (Italian)
  • ja (Japanese)
  • ja_kana (Japanese Kana form)
  • ja_rm (Romanization of Japanese)
  • ka (Georgian)
  • kk (Kazakh)
  • kn (Kannada)
  • ko (Korean)
  • ko_rm (Romanization of Korean)
  • la (Latin)
  • lb (Luxembourgish)
  • lt (Lithuanian)
  • lv (Latvian)
  • mk (Macedonian)
  • mt (Maltese)
  • ml (Malayalam)
  • nl (Dutch)
  • no (Norwegian)
  • pl (Polish)
  • pt (Portuguese)
  • rm (Romansh)
  • ro (Romania)
  • ru (Russian)
  • sk (Slovak)
  • sl (Slovene)
  • sq (Albanian)
  • sr (Serbian (Cyrillic))
  • sr-Latn (Serbian (Latin))
  • sv (Swedish)
  • th (Thai)
  • tr (Turkish)
  • uk (Ukrainian)
  • zh (Chinese)

map.projection_longitude number

Centre long..

map.projection_latitude number

Centre lat..

map.projection_roll number

Rotation.

map.graticules.enabled boolean

Allowed values:

  • true (Enabled)
  • false (Disabled)

map.graticules.color color

Colour.

map.graticules.width number

Width.

Max: 10

map.graticules.opacity number

Opacity.

Max: 100

map.graticules.longitude_step number

Longitude separation (°).

Max: 90

map.graticules.latitude_step number

Latitude separation (°).

Max: 90

Viewport and interaction

map.map_initial_type string

Initial viewport. By default, the initial viewport of the map is automatically set to include every visible object. The "centroid" option allows you to select a custom latitude, longitude and zoom. The "bounds" option lets you specify a custom bounding box for the viewport to enclose. Selecting "world" will display the whole world within the viewport, regardless of your data or settings.

Allowed values:

  • auto (Auto)
  • centroid_zoom (Centroid)
  • bounding_box (Bounds)
  • world (World)

map.map_initial_pitch_tiles number

Pitch. The amount of vertical rotation to apply to the map when it first loads. At zero the map will face completely top-down. Increasing the value to larger values will give the map the illusion of a 3D perspective.

Max: 60

map.map_initial_bearing_tiles number

Bearing. The direction the map should face when it first loads, in degrees. When set to zero the map will load facing north, at 180 the map will face south, and so on.

Min: -180

Max: 180

map.map_initial_pitch_projection number

Pitch. The amount of vertical rotation to apply to the map when it first loads. At zero the map will face completely top-down. Increasing the value to larger values will give the map the illusion of a 3D perspective.

Max: 60

map.map_initial_bearing_projection number

Bearing. The direction the map should face when it first loads, in degrees. When set to zero the map will load facing north, at 180 the map will face south, and so on.

Min: -180

Max: 180

map.map_initial_lat number

Latitude.

Min: -90

Max: 90

map.map_initial_lng number

Longitude.

Min: -180

Max: 180

map.map_initial_zoom number

Zoom.

Max: 22

map.map_initial_bounds_lng_min number

Min longitude.

Min: -180

Max: 180

map.map_initial_bounds_lat_min number

Min latitude.

Min: -90

Max: 90

map.map_initial_bounds_lng_max number

Max longitude.

Min: -180

Max: 180

map.map_initial_bounds_lat_max number

Max latitude.

Min: -90

Max: 90

map.map_aspect_type string

Resize by aspect ratio.

Allowed values:

  • none (None)
  • custom (Custom)

map.map_aspect_w number

Width.

Min: 1

map.map_aspect_h number

Height.

Min: 1

map.map_zoom_min number

Min zoom. Limit the map's zoom level so that the user cannot zoom out past a certain point.

Max: 22

map.map_zoom_max number

Max zoom. Limit the map's zoom level so that the user cannot zoom in past a certain point.

Max: 22

map.map_bound_position boolean

Limit viewport bounds. Enable this setting to restrict the viewport within a specific bounding box.

map.map_lng_min number

Min viewport longitude.

Min: -180

Max: 180

map.map_lat_min number

Min viewport latitude.

Min: -90

Max: 90

map.map_lng_max number

Max viewport longitude.

Min: -180

Max: 180

map.map_lat_max number

Max viewport latitude.

Min: -90

Max: 90

map.map_render_world_copies boolean

Repeat map horizontally. The map will display copies of the world on either side at higher zoom levels by default. Disable this if you would prefer only the one copy be visible.

map.animation_enabled boolean

Animate zoom & panning.

map.animation_type string

Animation type.

Allowed values:

  • speed (Speed)
  • duration (Duration)

map.animation_duration number

Duration (seconds).

Min: 0.01

Max: 60

map.animation_speed number

Speed.

Min: 0.01

Max: 4

map.map_interactive boolean

Allow user interaction.

map.controls_allow_rotation boolean

Allow rotation.

map.controls_geolocator_enabled boolean

Use geolocator control.

map.controls_geolocator_alignment string

Geolocator control position.

Allowed values:

  • top-left (Top left)
  • top-right (Top right)
  • bottom-left (Bottom left)
  • bottom-right (Bottom right)

map.controls_fullscreen_enabled boolean

Use fullscreen control.

map.controls_fullscreen_alignment string

Fullscreen control position.

Allowed values:

  • top-left (Top left)
  • top-right (Top right)
  • bottom-left (Bottom left)
  • bottom-right (Bottom right)

Inset map

minimap.minimap_display boolean

Display map.

minimap.minimap_rotate boolean

Rotate with camera.

minimap.minimap_custom_colors boolean

Customise colours.

minimap.minimap_fill color

Region fill color.

minimap.minimap_ocean_color color

Ocean color.

minimap.minimap_stroke color

Region stroke color.

minimap.minimap_outline color

Outline color.

minimap.minimap_show_bounds boolean

Display viewport bounds.

minimap.minimap_bounds_color color

Region bounds color.

minimap.minimap_bounds_opacity number

Region bounds opacity.

Max: 1

minimap.minimap_size_type string

Size units.

Allowed values:

  • px (px)
  • vh (vh)
  • vw (vw)
  • vmin (vmin)
  • vmax (vmax)

minimap.minimap_size_desktop_pixels number

Pixels (desktop).

Min: 1

minimap.minimap_size_mobile_pixels number

Pixels (mobile).

Min: 1

minimap.minimap_size_desktop_viewport number

Screen % (desktop).

Min: 1

Max: 100

minimap.minimap_size_mobile_viewport number

Screen % (mobile).

Min: 1

Max: 100

Markers

icon_scale number

Scale.

Max: 100

icon_default_icon url

Icon/emoji/image. Can be an emoji, Font Awesome icon code or an image; used for any markers that aren't already being styled based on the data

icon_default_opacity number

Opacity.

Max: 1

icon_default_color color

Colour.

Labels

label_size number

Label size.

label_offset number

Label offset.

label_autohide boolean

Hide overlapping labels.

label_custom_style boolean

Customise label style.

label_color color

Label color.

label_halo_color color

Halo color.

label_halo_width number

Halo width.

label_halo_blur number

Halo blur.

Legend

legend_show boolean

Show legend.

legend_title string

Title.

legend_background color

Box.

legend_text_color color

Text.

legend_opacity number

Opacity.

Max: 1

Regions

map.regions.extrude.enabled boolean

Extrude regions.

map.regions.extrude.min_height number

Min height.

map.regions.extrude.max_height number

Max height.

map.regions.colors.scale_type string

Scale type.

Allowed values:

  • categorical (Categorical)
  • sequential (Sequential)
  • diverging (Diverging)

map.regions.colors.categorical_type string

Allowed values:

  • palette (Palette)
  • generated (Generated)

map.regions.colors.categorical_palette colors

Palette.

map.regions.colors.categorical_extend boolean

Extend. Automatically generate additional colours when needed to avoid the palette colours being used more than once.

map.regions.colors.categorical_seed_color color

Seed color. Initial color in generated sequence (avoid shades of grey).

map.regions.colors.categorical_rotation_angle number

Hue rotation angle. Angle, in degrees, between one generated colour and the next. The default value, ~360/(Golden ratio), ensures adjacent hues are not too similar.

Max: 360

map.regions.colors.categorical_color_space string

Allowed values:

  • hcl (HCL)
  • hsl (HSL)

map.regions.colors.categorical_custom_palette text

Custom overrides. Type the name of the entity whose colour you want to set, a colon and then a colour (using a name, hex-code or rgb declaration). Multiple colours can be set using multiple lines. For example:


Party 1: red
Party 2: #4455AA
Party 3: rgb(30,168,26)

map.regions.colors.sequential_palette string

Palette.

Allowed values:

  • Oranges
  • Reds
  • Blues
  • Greens
  • Greys
  • Purples
  • Viridis
  • Inferno
  • Magma
  • Plasma
  • Warm
  • Cool
  • CubehelixDefault (Cubehelix)
  • BuGn (Blue/Green)
  • BuPu (Blue/Purple)
  • GnBu (Green/Blue)
  • OrRd (Orange/Red)
  • PuBuGn (Purple/Blue/Green)
  • PuBu (Purple/Blue)
  • PuRd (Purple/Red)
  • RdPu (Red/Purple)
  • YlGnBu (Yellow/Blue/Green)
  • YlGn (Yellow/Green)
  • YlOrBr (Yellow/Orange/Brown)
  • YlOrRd (Yellow/Orange/Red)
  • Carrots
  • Custom

map.regions.colors.sequential_custom_min color

Minimum color.

map.regions.colors.sequential_custom_max color

Maximum color.

map.regions.colors.sequential_color_space string

Allowed values:

  • rgb (RGB)
  • lab (LAB)
  • hcl (HCL)
  • hsl (HSL)

map.regions.colors.sequential_reverse boolean

Reverse.

map.regions.colors.diverging_palette string

Palette.

Allowed values:

  • RdBu (Red/Blue)
  • RdYlGn (Red/Yellow/Green)
  • PiYG (Pink/Yellow/Green)
  • BrBG (Brown/Blue/Green)
  • PRGn (Purple/Red/Green)
  • PuOr (Purple/Orange)
  • RdGy (Red/Grey)
  • RdYlBu (Red/Yellow/Blue)
  • Spectral
  • Custom

map.regions.colors.diverging_custom_min color

Minimum color.

map.regions.colors.diverging_custom_mid color

Midpoint color.

map.regions.colors.diverging_custom_max color

Maximum color.

map.regions.colors.diverging_color_space string

Allowed values:

  • rgb (RGB)
  • lab (LAB)
  • hcl (HCL)
  • hsl (HSL)

map.regions.colors.diverging_reverse boolean

Reverse.

map.regions.colors.binning boolean

Sequential mode. In linear mode, the color scale will run as a smooth gradient between 2 colors. In binned mode, the gradient will be divided in smaller blocks.

Allowed values:

  • false (Linear)
  • true (Binned)

map.regions.colors.bin_count number

Number of bins.

map.regions.colors.bin_mode string

Binning mode.

Allowed values:

  • fixed (Fixed width)
  • quantile (Quantile)
  • custom (Custom thresholds)

map.regions.colors.bin_thresholds string

Custom thresholds. Write your custom thresholds, separated by a ";" For example 5;10;15

map.regions.use_fallback boolean

Use fallback colour. When enabled, a colour of your choice is used when the value or category binding has not been enabled for your map, or if a value is invalid. Otherwise invalid numbers will be treated as zero, and empty categories will be included in the colour palette.

Allowed values:

  • true (Enable)
  • false (Disable)

map.regions.fill_default color

Fallback colour.

map.regions.opacity number

Region fill opacity.

Max: 100

map.regions.outline.enabled boolean

Enabled.

map.regions.outline.width number

Width.

Min: 0.2

Max: 4

map.regions.outline.color color

Colour.

Popups

popup.show_popups boolean

Popups.

Allowed values:

  • true (Enabled)
  • false (Disabled)

popup.is_custom boolean

Popup contents.

Allowed values:

  • false (Auto)
  • true (Custom content)

popup.custom_template text

Popup content. The text to appear in the popup. You can use {{column_name}} to add a value from your data. It must be in a selected column, but you can add columns to “Metadata” if you just want to include them for use in the popup. Advanced users can include HTML to apply layouts, formatting, images, etc.

popup.show_pointer boolean

Pointer.

popup.show_shadow boolean

Shadow.

popup.style_popups boolean

Custom styling.

popup.text_color color

Text colour.

popup.align string

Alignment.

Allowed values:

  • left (fa-align-left)
  • center (fa-align-center)
  • right (fa-align-right)

popup.font_size number

Font size.

Min: 1

popup.fill_color color

Fill colour.

popup.opacity number

Fill opacity.

Max: 1

popup.padding number

Padding.

popup.border_radius number

Radius. Corner radius of popup

Layout

layout.body_font font

Main font. This font will apply to the whole graphic by default, but you can optionally change the font for the title, subtitle, footer, etc in the Header and Footer settings panels.

layout.font_color color

Text color. This color will apply to the whole graphic by default, but you can optionally change the color for individual text elements, in other settings panels.

layout.background_color_enabled boolean

Color.

Allowed values:

  • true (On)
  • false (Off)

layout.background_image_enabled boolean

Image.

Allowed values:

  • true (On)
  • false (Off)

layout.background_color color

Background color.

layout.background_image_src url

Image URL.

layout.background_image_size string

Size.

Allowed values:

  • cover (Fill)
  • contain (Fit)
  • auto (Original)
  • 100% 100% (Stretch)

layout.background_image_position string

Position.

Allowed values:

  • top left (Top left)
  • top center (Top center)
  • top right (Top right)
  • center left (Center left)
  • center center (Center)
  • center right (Center right)
  • bottom left (Bottom left)
  • bottom center (Bottom center)
  • bottom right (Bottom right)

layout.max_width_target string

Maximum width. Apply a maximum width to just the main graphic or everything (main graphic plus header, footer, etc)

Allowed values:

  • none (None)
  • wrapper (Everything)
  • primary (Main graphic)

layout.max_width number

Maximum width. Leave blank to stretch to container width

Min: 50

layout.max_width_align string

Align.

Allowed values:

  • left (fa-align-left)
  • center (fa-align-center)
  • right (fa-align-right)

layout.layout_order string

Layout order.

Allowed values:

  • stack-default (data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAdCAYAAAHZdKxuAAAAAXNSR0IArs4c6QAAANhJREFUSA3tVNEOwiAM7Iy/p2/wkTz6g5gjOVZZEepcjMmWLBTau95ugIh6lpzzLcb4wNpFJaRk9MIahxAyXmD7mC7BC2RlFbliQjFMpJTujOdGs/ECwRoP3rlKoEzNJlz3+CwutK0NLRVt2QhjggA9n2IGEKANMxmt0VVsEfxgzfX7zL3ZiqbXLjcKc8vEORk5/75mMB/7u11uuIpdbtDCc5R3l/s+e+pmHt1foza7Nv6IXOeHiqGk9zWtSk1cN2cPrItnYjZzHZEZYtacxHTiuANSO/xN8AS4uW8Rw1Gu2AAAAABJRU5ErkJggg==)
  • stack-2 (data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAdCAYAAAHZdKxuAAAAAXNSR0IArs4c6QAAAMpJREFUSA3tVMsKwyAQNKW/l970Iz32Bw0jjKTrSLUY0oOBsO5rnOwYnTs9W0ppDyG8EcsOkw8uauu9T3jR2+75yJxBnnC4JxMxxlezg0V9VsJsIGz75TfKdlkpg3aPcT8TsPNRMJjZEIf5xaAAahUyE+RtfcZvtFLoFh95aFXxH4hCWpUoTCg7fxqUfB4yEcl/CJlNy5qbfuZA8m8CwJ77q2djSj50lnuAWbOAOQlXxCuRHxcUje2XzfgrYzBpHUXLkmxh181SpnEAB4Vg0DSGhHsAAAAASUVORK5CYII=)
  • stack-3 (data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAdCAYAAAHZdKxuAAAAAXNSR0IArs4c6QAAANFJREFUSA3tVEEOwyAMo9O+193gkRz3QSZHMmNRUkGp1guVqkCIHZMAITTfVkrZU0pv+B7NQpCV1vEdxxgLfmB9jEvwBBNzkjXn/HIRDOqzJs0GwS1eEmonAn52RITJaUYScd5KLl0fTQf58HVpIFlXMDPNBVMf2TDXPq7dZM2eelrMQ6uDucG50mlWzG/ooCWDvqENXldn1pcyhpgJWjYcPe5z5ZFrAgoe2LN0f2v1ZYq5UyofuiME99hFXKtUm1c9aoBmeEeRjVIQma6XpVblAwnpZjN/VjqsAAAAAElFTkSuQmCC)
  • stack-4 (data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAdCAYAAAHZdKxuAAAAAXNSR0IArs4c6QAAANtJREFUSA3tVNEOwjAI3Iy/p2/tR/bRH6zekmuA1glO45bYZAHKcdDCOk1izbXWC+0zlJzzDVJ5sNGW9qSUKj4QKY8yWvBDUWnoKKVcTzS2yWHiIfeMwm2yIbLbRL3DRJYubi+0bAPCkcvapO3AdFgZvuDuyJZR2i4wSpBBP9ZD7RsOLQ9gD/Y5ZmaA3EEHWY6r3SEwrzDEHLpnlvOXa4/7xttZfhNwyPdKcqLPaz6JlXpr9bNgCfbobw2ch5iY0CQzyCOPR9ya5zleBPNy3LxknAbiv1YxExxH3gEqBW7I4zw3PQAAAABJRU5ErkJggg==)

layout.space_between_sections string

Space between sections.

Allowed values:

  • 0.5 (▁)
  • 1 (▃)
  • 1.5 (▄)
  • custom (...)

layout.space_between_sections_custom number

Custom.

Max: 100

layout.margin_top number

Top.

layout.margin_right number

Right.

layout.margin_bottom number

Bottom.

layout.margin_left number

Left.

layout.border.enabled boolean

Show borders around visualisation.

layout.border.top.width number

Top.

layout.border.top.style string

Style.

Allowed values:

  • solid (Solid)
  • dashed (Dashed)
  • dotted (Dotted)

layout.border.top.color color

Color.

layout.border.right.width number

Right.

layout.border.right.style string

Style.

Allowed values:

  • solid (Solid)
  • dashed (Dashed)
  • dotted (Dotted)

layout.border.right.color color

Color.

layout.border.bottom.width number

Bottom.

layout.border.bottom.style string

Style.

Allowed values:

  • solid (Solid)
  • dashed (Dashed)
  • dotted (Dotted)

layout.border.bottom.color color

Color.

layout.border.left.width number

Left.

layout.border.left.style string

Style.

Allowed values:

  • solid (Solid)
  • dashed (Dashed)
  • dotted (Dotted)

layout.border.left.color color

Color.

layout.header_align string

Alignment.

Allowed values:

  • left (fa-align-left)
  • center (fa-align-center)
  • right (fa-align-right)

layout.title string

layout.title_styling boolean

Change title styles.

layout.title_font font

Title Font.

layout.title_size string

Size.

Allowed values:

  • 1.4 (ᴀ)
  • 1.6 (A)
  • 2 (fa-font)
  • custom (...)

layout.title_size_custom number

Custom. Specify a custom responsive font size. Best results will be with values between 1.2 and 3

layout.title_weight string

Weight.

Allowed values:

  • bold (Bold)
  • normal (Regular)

layout.title_color color

Color.

layout.title_line_height number

Line height.

Max: 3

layout.title_space_above string

Space above.

Allowed values:

  • 0 (▁)
  • 0.5 (▃)
  • 1 (▄)
  • custom (...)

layout.title_space_above_custom number

Custom.

Max: 100

layout.subtitle string

layout.subtitle_styling boolean

Change subtitle styles.

layout.subtitle_font font

Subtitle Font.

layout.subtitle_size string

Size.

Allowed values:

  • 1.4 (ᴀ)
  • 1.6 (A)
  • 2 (fa-font)
  • custom (...)

layout.subtitle_size_custom number

Custom. Specify a custom responsive font size. Best results will be with values between 1.2 and 3

layout.subtitle_weight string

Weight.

Allowed values:

  • bold (Bold)
  • normal (Regular)

layout.subtitle_color color

Color.

layout.subtitle_line_height number

Line height.

Max: 3

layout.subtitle_space_above string

Space above.

Allowed values:

  • 0 (▁)
  • 0.5 (▃)
  • 1 (▄)
  • custom (...)

layout.subtitle_space_above_custom number

Custom.

Max: 100

layout.header_text string

layout.header_text_styling boolean

Styling.

layout.header_text_size string

Size.

Allowed values:

  • 1.2 (ᴀ)
  • 1.4 (A)
  • 1.6 (fa-font)
  • custom (...)

layout.header_text_size_custom number

Custom. Specify a custom responsive font size. Best results will be with values between 1.2 and 3

layout.header_text_weight string

Weight.

Allowed values:

  • bold (Bold)
  • normal (Regular)

layout.header_text_color color

Color.

layout.header_text_line_height number

Line height.

Max: 3

layout.header_text_space_above string

Space above.

Allowed values:

  • 0 (▁)
  • 0.5 (▃)
  • 1 (▄)
  • custom (...)

layout.header_text_space_above_custom number

Custom.

Max: 100

layout.header_border string

Allowed values:

  • top (Top)
  • bottom (Bottom)
  • none (None)

layout.header_border_width number

Width.

layout.header_border_color color

Color.

layout.header_border_style string

Style.

Allowed values:

  • solid (Solid)
  • dashed (Dashed)
  • dotted (Dotted)

layout.header_border_space number

Space. Space between border and header text

layout.header_logo_enabled boolean

Allowed values:

  • true (Enabled)
  • false (Disabled)

layout.header_logo_src url

URL.

layout.header_logo_height number

Height.

layout.header_logo_align string

Align. Align logo inside header or outer visualisation container

Allowed values:

  • outside (Outside)
  • inside (Inside)

layout.header_logo_position_inside string

Position.

Allowed values:

  • top (Top)
  • left (Left)
  • right (Right)

layout.header_logo_position_outside string

Position.

Allowed values:

  • left (Left)
  • right (Right)

layout.header_logo_margin_top number

Top.

layout.header_logo_margin_right number

Right.

layout.header_logo_margin_bottom number

Bottom.

layout.header_logo_margin_left number

Left.

layout.footer_align string

Alignment.

Allowed values:

  • left (fa-align-left)
  • center (fa-align-center)
  • right (fa-align-right)
  • justify (fa-align-justify)

layout.footer_text_size number

Size.

layout.footer_text_color color

Color.

layout.footer_styling boolean

Advanced footer styles.

layout.footer_font font

Font.

layout.source_name string

Source name.

layout.source_url string

Source url.

layout.multiple_sources boolean

Multiple sources.

layout.source_name_2 string

Source name.

layout.source_url_2 string

Source url.

layout.source_name_3 string

Source name.

layout.source_url_3 string

Source url.

layout.source_label string

Source label.

layout.footer_note string

Note.

layout.footer_note_secondary string

Note (secondary). The secondary note is placed below the source and primary note

layout.footer_logo_enabled boolean

Image.

Allowed values:

  • true (Enabled)
  • false (Disabled)

layout.footer_logo_src url

Image.

layout.footer_logo_src_light hidden

Image (light version). If provided this version will be used whenever the background colour is dark

Link.

layout.footer_logo_height number

Height.

layout.footer_logo_margin number

Margin.

layout.footer_logo_order string

Position.

Allowed values:

  • left (Left)
  • right (Right)

layout.footer_align_vertical string

V. align.

Allowed values:

  • flex-start (Top)
  • center (Center)
  • flex-end (Bottom)

layout.footer_border string

Allowed values:

  • top (Top)
  • bottom (Bottom)
  • none (None)

layout.footer_border_width number

Width.

layout.footer_border_color color

Color.

layout.footer_border_style string

Style.

Allowed values:

  • solid (Solid)
  • dashed (Dashed)
  • dotted (Dotted)

layout.footer_border_space number

Space. Space between border and footer text

Accessibility

layout.screenreader_hide_primary boolean

Screenreader mode for main visual container. Whether the main visual container is visible to screenreaders. (Text in the header and footer are always available to screenreaders.)

Allowed values:

  • true (Hidden)
  • false (Readable)

layout.screenreader_text_primary text

Screenreader description. A text alternative to the visual content that will only be visible to screenreaders, e.g. “The line chart shows China consistently higher than the other countries since 1990”. Do no replicate your title, since that will also be read by screenreaders.