Skip to main content

GeoJSONSource

GeoJSONSource is a map content source that supplies GeoJSON to be shown on the map. The data may be provided as an url or a GeoJSON object.

Props​

id​

A string that uniquely identifies the source.

Type: string

Required: No

data​

Can be provided as one of:

  • An HTTP(S) URL, absolute file URL, or local file URL relative to the current application’s resource bundle
  • Any valid GeoJSON object

Type: string | GeoJSON.GeoJSON

Required: Yes

cluster​

Enables clustering on the source

Type: boolean

Required: No

clusterRadius​

Specifies the radius of each cluster if clustering is enabled. A value of 512 produces a radius equal to the width of a tile. The default value is 50.

Type: number

Required: No

clusterMinPoints​

Specifies minimum number of points to form a cluster if clustering is enabled. The default value is 2.

Type: number

Required: No

clusterMaxZoom​

Specifies the maximum zoom level at which to cluster points if clustering is enabled. Defaults to one zoom level less than the value of maxzoom so that, at the maximum zoom, the data is not clustered.

Type: number

Required: No

clusterProperties​

Specifies custom properties on the generated clusters if clustering is enabled, aggregating values from clustered points. Has the form { "property_name": [operator, map_expression]} , where operator is a custom reduce expression that references a special ["accumulated"] value - it accumulates the property value from clusters/points the cluster contains map_expression produces the value of a single point

Type: GeoJSONSourceSpecification["clusterProperties"]

Required: No

maxzoom​

Specifies the maximum zoom level at which to create vector tiles. A greater value produces greater detail at high zoom levels. The default value is 18.

Type: number

Required: No

buffer​

Specifies the size of the tile buffer on each side. A value of 0 produces no buffer. A value of 512 produces a buffer as wide as the tile itself. Larger values produce fewer rendering artifacts near tile edges and slower performance. The default value is 128.

Type: number

Required: No

tolerance​

Douglas-Peucker simplification tolerance applied to geometries Higher means simpler geometries and faster performance.

Type: number

Required: No

Default: 0.375

lineMetrics​

Whether to calculate line distance metrics. This is required for line layers that specify lineGradient values. The default value is false.

Type: boolean

Required: No

children​

Type: ReactNode

Required: No

ref​

Ref to access GeoJSONSource methods.

Type: Ref<GeoJSONSourceRef>

Required: No

testID​

Type: string

Required: No

onPress​

Emits on press when a child Layer within the hitbox has highest z-index This bubbles up to Map's onPress unless event.stopPropagation() is called.

Type: (event: NativeSyntheticEvent<PressEventWithFeatures>) => void

Required: No

hitbox​

Overrides the default touch hitbox (44 x 44 pixels) for the source layers

Type: ViewPadding

Required: No

Ref Methods​

getData([filter])​

Get all features from the source that match the filter, regardless of visibility

filter​

Optional filter statement to filter the returned features

Type: FilterSpecification

Required: No

Returns: Promise<GeoJSON.FeatureCollection>

const data = await geoJSONSourceRef.current?.getData(clusterId);

getClusterExpansionZoom(clusterId)​

Returns the zoom needed to expand the cluster.

clusterId​

The feature cluster to expand.

Type: number

Required: Yes

Returns: Promise<number> — Zoom level at which the cluster expands

const zoom = await geoJSONSourceRef.current?.getClusterExpansionZoom(clusterId);

getClusterLeaves(clusterId, limit, offset)​

Returns the FeatureCollection from the cluster.

clusterId​

The feature cluster to expand.

Type: number

Required: Yes

limit​

The number of points to return.

Type: number

Required: Yes

offset​

The amount of points to skip (for pagination).

Type: number

Required: Yes

Returns: Promise<GeoJSON.Feature[]>

const collection = await geoJSONSourceRef.current?.getClusterLeaves(clusterId, limit, offset);

getClusterChildren(clusterId)​

Returns the FeatureCollection from the cluster (on the next zoom level).

clusterId​

The feature cluster to expand.

Type: number

Required: Yes

Returns: Promise<GeoJSON.Feature[]>

const collection = await geoJSONSourceRef.current?.getClusterChildren(clusterId);

getAnimatableRef()​

Returns the native ref for Reanimated compatibility.

Returns: NativeGeoJSONSourceRef | null