> Documentation index: https://www.gooddata.ai/docs/gooddata-ui/llms.txt lists every page of these docs as Markdown.

# Geo chart

> Display geographic data on an interactive map with the GeoChart component.

API reference: [GeoChart()](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.geochart/index.md) (function), [IGeoChartProps](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeochartprops/index.md) (interface), [IGeoChartConfig](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeochartconfig/index.md) (interface), [IGeoLayer](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeolayer/index.md) (type-alias), [IGeoLayerConfig](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeolayerconfig/index.md) (interface), [IGeoChartViewport](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeochartviewport/index.md) (interface), [IGeoChartLegendConfig](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeochartlegendconfig/index.md) (interface), [GeoLegendPosition](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.geolegendposition/index.md) (type-alias), [IGeoChartPointsConfig](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeochartpointsconfig/index.md) (interface), [IGeoAreasConfig](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeoareasconfig/index.md) (interface)

A **geo chart** visualizes data on a map using one or more layers (pushpin layers for point data and area layers for region data).

## [Configuration](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-chart/#configuration)

`config: IGeoChartConfig` is shared by every layer. The sections below group
its fields by what they control.

### [Viewport and navigation](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-chart/#viewport-and-navigation)

`center`/`zoom` set the initial view (the map auto-fits to the data when
omitted). `bounds` takes priority over `center`/`zoom` and adapts to the
container's dimensions. `viewport.area` picks a preset: `"auto"` (default,
fits all data), `"world"`, or a `continent_*` value (`af`, `as`, `au`,
`eu`, `na`, `sa`). Any explicitly set `viewport.area` other than `"custom"`, including
`"auto"`, wins over `bounds` and `center`/`zoom`. Set it to `"custom"` (or
omit it) when you want those to apply.

```tsx
const config = {
    viewport: {
        area: "continent_eu",
        frozen: false,
        navigation: { pan: true, zoom: false },
    },
};
```

`viewport.frozen` (default `false`) locks all map interaction. For
finer-grained control, `viewport.navigation.pan`/`.zoom` (both default
`true`) lock panning and zooming independently.

### [Legend](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-chart/#legend)

- `legend.enabled` (default `true`) shows or hides the legend.
- `legend.position` (default `"auto"`) places it at `"top-left"`,
  `"top-right"`, `"bottom-left"`, `"bottom-right"`, or lets `"auto"` pick
  based on available space.
- `legend.responsive` (default `false`) accepts `true` for a responsive
  layout, or `"autoPositionWithPopup"` to collapse the legend into a popup in
  small containers.

> **Warning:**
> Geo charts use this corner-based [`GeoLegendPosition`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.geolegendposition/index.md), not the four-side
> `LegendPosition` documented on [Chart configuration](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/chart-config/index.md) for other
> visualization types. The legacy edge values `"top"`, `"right"`, `"bottom"`,
> and `"left"` are still accepted for backward compatibility, but are silently
> normalized to a corner (`"top"`/`"right"` → `"top-right"`, `"bottom"` →
> `"bottom-right"`, `"left"` → `"top-left"`) — passing one does not error, it
> just may not land where you expect.

### [Clustering and marker appearance](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-chart/#clustering-and-marker-appearance)

```tsx
const config = {
    points: {
        groupNearbyPoints: true,
        minSize: "0.5x",
        maxSize: "1.5x",
    },
};
```

- `points.minSize`/`points.maxSize` (both default `"normal"`) scale pushpin
  markers when a `size` measure is present: `"0.5x"`, `"0.75x"`, `"normal"`,
  `"1.25x"`, `"1.5x"`, or `"default"`.
- `points.groupNearbyPoints` (default `true`) clusters nearby pushpins.
  Clustering is applied only when the layer has no `size`, `color`, or
  `segmentBy`.
- `points.shapeType` (default `"circle"`) also accepts `"iconByValue"`
  (requires the layer's `geoIcon` attribute — see [Per-layer
  overrides](#per-layer-overrides)) or `"oneIcon"` (requires `points.icon`,
  a sprite-sheet icon name). Icon shapes do **not** fall back to circle
  markers when their required icon source is missing — the marker may
  not render.

### [Area styling](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-chart/#area-styling)

| Field | Type | Default | Description |
|---|---|---|---|
| `areas.fillOpacity` | `number` | `0.7` | Opacity of filled regions (0–1). |
| `areas.borderColor` | `string` | `"#FFFFFF"` | Color of region borders. |
| `areas.borderWidth` | `number` | `1` | Width of region borders, in pixels. |

### [Colors](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-chart/#colors)

`colors`, `colorPalette`, and `colorMapping` work the same way as on other
visualizations — see [Chart configuration](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/chart-config/index.md#configure-colors) for
the shared mechanism. On a geo chart, `colorMapping` can also be overridden
per layer; see [Per-layer overrides](#per-layer-overrides).

### [Map style](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-chart/#map-style)

`mapStyle` sets a MapLibre style URL or inline style specification for the
whole map.

```tsx
const config = { mapStyle: "https://example.com/my-style.json" };
```

### [Other config fields](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-chart/#other-config-fields)

| Field | Type | Description |
|---|---|---|
| `isExportMode` | `boolean` | Disables gestures and preserves the drawing buffer for export. |
| `limit` | `number` | Maximum number of rendered data points. |
| `selectedSegmentItems` | `string[]` | Segment values to keep visible under legend-driven filtering. |
| `maxZoomLevel` | `number \| null` | Maximum zoom level. `undefined` keeps the default; `null` removes the cap. |
| `separators` | [`ISeparators`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-model/sdk-model.iseparators/index.md) | Custom thousand/decimal separators for formatted numbers. |
| `showLabels` | `boolean` | Shows data labels on the map, where the layer supports them. |
| `cooperativeGestures` | `boolean` | Requires Ctrl/Cmd + scroll to zoom — useful inside a scrolling page. |
| `enableExecutionCancelling` | `boolean` | Cancels a running execution when props change before it resolves. |
| `respectLegendPosition` | `boolean` | Keeps the requested legend position even when responsive heuristics disagree. |

## [Per-layer overrides](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-chart/#per-layer-overrides)

Each entry in `layers` also accepts its own overrides on top of the shared
`config`:

```tsx
const layers = [
    createPushpinLayer(
        {
            latitude: Md.City.Latitude,
            longitude: Md.City.Longitude,
            color: Md.Population.Sum,
            tooltipText: Md.City.Name,
            config: {
                colorMapping: [
                    {
                        predicate: (header) => header.attributeHeaderItem?.name === "Downtown",
                        color: { type: "guid", value: "02" },
                    },
                ],
            },
        },
        "cities",
    ),
    createAreaLayer(
        {
            area: Md.Country.Name,
            color: Md.Revenue.Sum,
            tooltipText: Md.Country.IsoCode,
        },
        "countries",
    ),
];
```

- `id` is required and must be unique per layer. `createPushpinLayer`/
  `createAreaLayer` default it to a fixed per-type id (as in the second
  argument above), so give an explicit id when a chart has two layers of the
  same type.
- `name` is an optional display name; it falls back to `id` when omitted.
- `config: IGeoLayerConfig` (`colorPalette`, `colorMapping`) overrides the
  chart-level `config` for that layer only. Each field is resolved
  separately: a field set on the layer replaces the chart-level value, and
  a field left unset falls back to the chart-level value (or the default
  palette).
- `filters` on a layer run **before** the top-level `GeoChart.filters`. When
  both set a value for the same "last wins" filter type — for example a date
  filter on the same date dataset, or a measure value filter on the same
  measure — the top-level filter wins. Other filter types accumulate per the
  SDK's normal filter-merge rules.
- `sortBy` sorts that layer's data, which can affect tooltip order and
  rendering priority.
- `tooltipText` sets the attribute shown in that layer's tooltips. It only
  applies to the layer it's set on.
- Pushpin layers only: `measures` adds extra measures to the tooltip without
  affecting size or color, and `geoIcon` supplies the icon attribute
  required when `config.points.shapeType` is `"iconByValue"`.

## [Map worker, bundlers, and CSP](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-chart/#map-worker-bundlers-and-csp)

Geo charts render with [MapLibre GL JS](https://maplibre.org/), which parses map data in a web worker. The
`@gooddata/sdk-ui-geo` package ships that worker, so you don't need to configure your bundler:

- If your bundler turns the package's `new URL("...", import.meta.url)` reference into an emitted asset (webpack,
  Vite, Rspack), the chart starts the worker from that same-origin file.
- Otherwise (Angular CLI with either builder, esbuild, Rollup without plugins, Vite library mode), the chart starts
  the worker from an inline Blob built from the worker code, which it loads on demand together with MapLibre.

If your page sets a Content Security Policy, allow both forms: `worker-src 'self' blob:`.

If your policy can't allow `blob:` workers, host `node_modules/@gooddata/sdk-ui-geo/worker/maplibre-gl-worker.js`
from your application and pass its URL to the `setWorkerUrl` function of `maplibre-gl` before the first geo chart
renders. The SDK keeps a worker URL that is already set. Your application must resolve the same copy of
`maplibre-gl` as the SDK, so declare it as a dependency with the version the SDK pins.

## [Notes](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-chart/#notes)

- Use [`GeoPushpinChart`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.geopushpinchart/index.md) and [`GeoAreaChart`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.geoareachart/index.md) if you only need a single layer — see [Geo pushpin chart](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-pushpin-chart/index.md) and [Geo area chart](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-area-chart/index.md).
- Geo charts are MapLibre-based and **do not require a Mapbox access token**. If you are upgrading an older app, see [Geo pushpin chart](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-pushpin-chart/index.md#map-rendering) for details about legacy Mapbox compatibility ([`LegacyGeoPushpinChart`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.legacygeopushpinchart/index.md), deprecated `mapboxToken`).

## [Structure](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-chart/#structure)

```tsx
import "@gooddata/sdk-ui-geo/styles/css/main.css";
import { GeoChart, createAreaLayer, createPushpinLayer } from "@gooddata/sdk-ui-geo";

<GeoChart
    layers={[
        createPushpinLayer({
            latitude: <attribute>,
            longitude: <attribute>,
            size: <measure>,
            color: <measure>,
            segmentBy: <attribute>,
        }),
        createAreaLayer({
            area: <attribute>,
            color: <measure>,
            segmentBy: <attribute>,
        }),
    ]}
    config={<geo-chart-config>}
    filters={<filters>}
/>
```

## [Example](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-chart/#example)

```tsx
import "@gooddata/sdk-ui-geo/styles/css/main.css";
import { GeoChart, createAreaLayer, createPushpinLayer } from "@gooddata/sdk-ui-geo";
import * as Md from "./catalog.js";

const layers = [
    createPushpinLayer({
        latitude: Md.City.Latitude,
        longitude: Md.City.Longitude,
        size: Md.Population.Sum,
    }),
    createAreaLayer({
        area: Md.Country.Name,
        color: Md.Revenue.Sum,
    }),
];

const config = {
    viewport: { area: "world" },
    legend: { enabled: true, position: "bottom-right" },
    points: { minSize: "0.75x", maxSize: "1.5x" },
    areas: { fillOpacity: 0.6 },
};

<div style={{ height: 600, width: 900 }}>
    <GeoChart layers={layers} config={config} />
</div>;
```

## [Props](https://www.gooddata.ai/docs/gooddata-ui/latest/visualisations/geo-chart/#props)

| Prop | Type | Required | Description | Inherited from |
|------|------|----------|-------------|----------------|
| [`layers`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeochartprops/index.md#igeochartpropslayers) | [`IGeoLayer`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeolayer/index.md)`[]` | Yes | Array of layer definitions rendered in order. The first layer drives legends and drilling. | — |
| [`config`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeochartprops/index.md#igeochartpropsconfig) | [`IGeoChartConfig`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeochartconfig/index.md) | No | Unified configuration shared by all layers. | — |
| [`type`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeochartprops/index.md#igeochartpropstype) | [`GeoLayerType`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.geolayertype/index.md) | No | Visualization type reported through pushData callbacks. Defaults to the primary layer type. | — |
| [`backend`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md#igeocommonexecutionpropsbackend) | [`IAnalyticalBackend`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-backend-spi/sdk-backend-spi.ianalyticalbackend/index.md) | No | Backend used for data execution. Falls back to BackendProvider when omitted. | [`IGeoCommonExecutionProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md) |
| [`drillableItems`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationprops/index.md#ivisualizationpropsdrillableitems) | [`ExplicitDrill`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.explicitdrill/index.md)`[]` | No | Configure drillability; e.g. which parts of the visualization can be interacted with. | [`IVisualizationProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationprops/index.md) |
| [`ErrorComponent`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationprops/index.md#ivisualizationpropserrorcomponent) | `ComponentType<`[`IErrorProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ierrorprops/index.md)`>` | No | React component to display in the event when there is an error with either obtaining the data from backend or with the data itself. | [`IVisualizationProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationprops/index.md) |
| [`execConfig`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md#igeocommonexecutionpropsexecconfig) | [`IExecutionConfig`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-model/sdk-model.iexecutionconfig/index.md) | No | Additional execution configuration forwarded to backend. | [`IGeoCommonExecutionProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md) |
| [`exportTitle`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationprops/index.md#ivisualizationpropsexporttitle) | `string` | No | Set title to use for exported files. | [`IVisualizationProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationprops/index.md) |
| [`filters`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md#igeocommonexecutionpropsfilters) | [`NullableFiltersOrPlaceholders`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.nullablefiltersorplaceholders/index.md) | No | Filters applied to every layer execution. | [`IGeoCommonExecutionProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md) |
| [`LoadingComponent`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationprops/index.md#ivisualizationpropsloadingcomponent) | `ComponentType<`[`ILoadingProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.iloadingprops/index.md)`>` | No | React component to display while loading data from the backend. | [`IVisualizationProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationprops/index.md) |
| [`locale`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationprops/index.md#ivisualizationpropslocale) | `string` | No | Set Locale for visualization localization. | [`IVisualizationProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationprops/index.md) |
| [`onBoundsChanged`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md#igeocommonexecutionpropsonboundschanged) | [`BoundsChangedCallback`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.boundschangedcallback/index.md) | No | Callback fired when the map visible bounds change. | [`IGeoCommonExecutionProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md) |
| [`onCenterPositionChanged`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md#igeocommonexecutionpropsoncenterpositionchanged) | [`CenterPositionChangedCallback`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.centerpositionchangedcallback/index.md) | No | Callback fired when the map center changes. | [`IGeoCommonExecutionProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md) |
| [`onDataView`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationcallbacks/index.md#ivisualizationcallbacksondataview) | [`OnDataView`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ondataview/index.md) | No | _(Alpha)_ Called when the visualization loads a DataView, i.e. it receives data from the backend. | [`IVisualizationCallbacks`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationcallbacks/index.md) |
| [`onDrill`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationcallbacks/index.md#ivisualizationcallbacksondrill) | [`OnFiredDrillEvent`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.onfireddrillevent/index.md) | No | Called when user triggers a drill on a visualization. | [`IVisualizationCallbacks`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationcallbacks/index.md) |
| [`onError`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationcallbacks/index.md#ivisualizationcallbacksonerror) | [`OnError`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.onerror/index.md) | No | Called when an error occurs while loading data for the visualization. | [`IVisualizationCallbacks`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationcallbacks/index.md) |
| [`onExportReady`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationcallbacks/index.md#ivisualizationcallbacksonexportready) | [`OnExportReady`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.onexportready/index.md) | No | Called when the visualization is ready to be exported. | [`IVisualizationCallbacks`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationcallbacks/index.md) |
| [`onLoadingChanged`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationcallbacks/index.md#ivisualizationcallbacksonloadingchanged) | [`OnLoadingChanged`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.onloadingchanged/index.md) | No | Called when loading status of the visualization changes - vis starts or stops loading | [`IVisualizationCallbacks`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui/sdk-ui.ivisualizationcallbacks/index.md) |
| [`onViewportInteractionEnd`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md#igeocommonexecutionpropsonviewportinteractionend) | [`ViewportInteractionEndCallback`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.viewportinteractionendcallback/index.md) | No | Callback fired when a user-triggered viewport interaction finishes. | [`IGeoCommonExecutionProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md) |
| [`onZoomChanged`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md#igeocommonexecutionpropsonzoomchanged) | [`ZoomChangedCallback`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.zoomchangedcallback/index.md) | No | Callback fired when map zoom changes. | [`IGeoCommonExecutionProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md) |
| [`placeholdersResolutionContext`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md#igeocommonexecutionpropsplaceholdersresolutioncontext) | `object` | No | Resolution context for composed placeholders. | [`IGeoCommonExecutionProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md) |
| [`theme`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md#igeocommonexecutionpropstheme) | [`ITheme`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-model/sdk-model.itheme/index.md) | No | Theme override. Defaults to the nearest ThemeProvider. | [`IGeoCommonExecutionProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md) |
| [`workspace`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md#igeocommonexecutionpropsworkspace) | `string` | No | Workspace identifier. Falls back to WorkspaceProvider when omitted. | [`IGeoCommonExecutionProps`](https://www.gooddata.ai/docs/gooddata-ui/latest/api-reference/sdk-ui-geo/sdk-ui-geo.igeocommonexecutionprops/index.md) |
