Class GeoJSONSource

A source containing GeoJSON. (See the Style Specification for detailed documentation of options.)

Example

map.addSource('some id', {
type: 'geojson',
data: 'https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_10m_ports.geojson'
});

Example

map.addSource('some id', {
type: 'geojson',
data: {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"properties": {},
"geometry": {
"type": "Point",
"coordinates": [
-76.53063297271729,
39.18174077994108
]
}
}]
}
});

Example

map.getSource('some id').setData({
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"properties": { "name": "Null Island" },
"geometry": {
"type": "Point",
"coordinates": [ 0, 0 ]
}
}]
});

See

Hierarchy (view full)

Implements

Methods

  • Responsible for invoking WorkerSource's geojson.loadData target, which handles loading the geojson data and preparing to serve it up as tiles, using geojson-vt or supercluster as appropriate.

    Parameters

    Returns Promise<void>

  • For clustered sources, fetches the children of the given cluster on the next zoom level (as an array of GeoJSON features).

    Parameters

    • clusterId: number

      The value of the cluster's cluster_id property.

    Returns Promise<Feature<Geometry, {
        [name: string]: any;
    }>[]>

    a promise that is resolved when the features are retrieved

  • For clustered sources, fetches the zoom at which the given cluster expands.

    Parameters

    • clusterId: number

      The value of the cluster's cluster_id property.

    Returns Promise<number>

    a promise that is resolved with the zoom number

  • For clustered sources, fetches the original points that belong to the cluster (as an array of GeoJSON features).

    Parameters

    • clusterId: number

      The value of the cluster's cluster_id property.

    • limit: number

      The maximum number of features to return.

    • offset: number

      The number of features to skip (e.g. for pagination).

    Returns Promise<Feature<Geometry, {
        [name: string]: any;
    }>[]>

    a promise that is resolved when the features are retrieved

    Example

    Retrieve cluster leaves on click

    map.on('click', 'clusters', (e) => {
    let features = map.queryRenderedFeatures(e.point, {
    layers: ['clusters']
    });

    let clusterId = features[0].properties.cluster_id;
    let pointCount = features[0].properties.point_count;
    let clusterSource = map.getSource('clusters');

    const features = await clusterSource.getClusterLeaves(clusterId, pointCount);
    // Print cluster leaves in the console
    console.log('Cluster leaves:', features);
    });
  • Allows to get the source's actual GeoJSON data.

    Returns Promise<GeoJSON>

    a promise which resolves to the source's actual GeoJSON data

  • Returns a true if this instance of Evented or any forwardeed instances of Evented have a listener for the specified type.

    Parameters

    • type: string

      The event type

    Returns boolean

    true if there is at least one registered listener for specified event type, false otherwise

  • Removes a previously registered event listener.

    Parameters

    • type: string

      The event type to remove listeners for.

    • listener: Listener

      The listener function to remove.

    Returns GeoJSONSource

  • Adds a listener to a specified event type.

    Parameters

    • type: string

      The event type to add a listen for.

    • listener: Listener

      The function to be called when the event is fired. The listener function is called with the data object passed to fire, extended with target and type properties.

    Returns this

  • Adds a listener that will be called only once to a specified event type.

    The listener will be called first time the event fires after the listener is registered.

    Parameters

    • type: string

      The event type to listen for.

    • Optional listener: Listener

      The function to be called when the event is fired the first time.

    Returns Promise<any> | GeoJSONSource

    this or a promise if a listener is not provided

  • To disable/enable clustering on the source options

    Parameters

    Returns this

    Example

    map.getSource('some id').setClusterOptions({cluster: false});
    map.getSource('some id').setClusterOptions({cluster: false, clusterRadius: 50, clusterMaxZoom: 14});
  • Sets the GeoJSON data and re-renders the map.

    Parameters

    • data: string | GeoJSON

      A GeoJSON data object or a URL to one. The latter is preferable in the case of large GeoJSON files.

    Returns this

  • Updates the source's GeoJSON, and re-renders the map.

    For sources with lots of features, this method can be used to make updates more quickly.

    This approach requires unique IDs for every feature in the source. The IDs can either be specified on the feature, or by using the promoteId option to specify which property should be used as the ID.

    It is an error to call updateData on a source that did not have unique IDs for each of its features already.

    Updates are applied on a best-effort basis, updating an ID that does not exist will not result in an error.

    Parameters

    Returns this