A record describing each source name and the
FeatureCollection type it carries. When omitted, every source defaults to
FeatureCollection.
OptionalbeforeLayerConfig?: CustomGeoJSONBeforeLayerConfigWhere the layers that set no beforeLayerConfig of their own go in the map's layer stack.
Optionalimages?: Record<string, CustomGeoJSONImageSpec>Custom images to register on the map by ID. The module adds each image during
setup, before any source or layer is created, and re-adds every image after every
style change. Symbol layers that reference an image with icon-image: '<id>'
therefore survive setStyle calls automatically.
map.hasImage(id) is already true, unless it added them itself.applyConfig re-runs image registration additively. It adds new IDs, and
replaces an image it added when you pass a new image or options for it.
Removing an entry from images doesn't unregister it from the map, since other
layers may still reference it.The sources, keyed by an arbitrary user-defined name, that this module manages.
The set of source names is fixed at module creation time, as is each source's sourceID.
CustomGeoJSONModule.applyConfig throws on new source names, omitted ones or a changed
sourceID, and changes nothing. At runtime, you can update only the layer specs and visibility of
existing sources.
Optionalvisible?: booleanWhether the module draws every layer of every source.
A shown source draws its layers while it holds features. show() and clear() never change
this. A hidden module keeps its data until CustomGeoJSONModule.setVisible shows it again.
type MySources = {
buildings: FeatureCollection<Point, { name: string }>;
parks: FeatureCollection<Polygon>;
};
const config: CustomGeoJSONModuleConfig<MySources> = {
sources: {
buildings: { layers: [{ type: 'circle', paint: { 'circle-radius': 4 } }] },
parks: { layers: [{ type: 'fill', paint: { 'fill-color': '#5a5' } }] },
},
};
CustomGeoJSONModuleSerializableConfig for the part that survives JSON.
Configuration for the CustomGeoJSONModule.