Bulk Feature Layer
Vector-feature layer driven by a BulkFeatureSource. The source delivers (geometry, properties_json) rows from one of:
GeoJSON document: earth.worldwind.layer.source.GeoJsonBulkFeatureSource.
network WFS: earth.worldwind.ogc.wfs.WfsBulkFeatureSource → WFS GetFeature pipeline.
network Shapefile: earth.worldwind.formats.shapefile.ShapefileBulkFeatureSource → one HTTP fetch of the .shp/.dbf/.prj triple.
cache: earth.worldwind.layer.cache.CachedBulkFeatureSource wrapping a earth.worldwind.layer.cache.FeatureStore.
cache-first then network:
CachedBulkFeatureSource(WfsBulkFeatureSource(...), store).
"Bulk" because one source fetch pulls every feature in the layer; there is no per-tile addressing. Compare:
earth.worldwind.layer.mvt.MvtVectorLayer — bytes-per-tile vector source.
earth.worldwind.layer.buildings.OsmBuildingsLayer — features-per-tile source.
Styling fires twice per feature when autoApplyStyle is true (default): first applyFeatureStyle reads GeoJSON simplestyle keys (stroke, fill, icon, etc.) onto the renderable, then customLogicToApplyProperties runs and can override anything. Disable with autoApplyStyle = false when the source emits properties that aren't simplestyle and you don't want the no-match defaults applied.
Point features become a Label when the resolved feature name is non-blank and the icon property is absent; otherwise a Placemark. LineStrings become Paths, Polygons become Polygons, MultiPolygons fan out to N Polygons sharing one properties map.
Constructors
Properties
Apply applyFeatureStyle from the feature's properties before customLogicToApplyProperties runs. Off for sources whose properties are pure data with no styling intent (some WFS endpoints).
Debounce after the viewport settles before reading, when autoRefreshViewport is on.
Fraction the visible sector is padded by on each side before reading (hysteresis).
When true, each frame reads only the visible viewport via BulkFeatureSource.readBySector instead of loading everything via load. Pair with a cache-backed source (CachedBulkFeatureSource over a GeoPackage store): downloaded once, then every pan/zoom is a BBOX query off its spatial index so RAM holds only visible features. A plain network source has no index — its default readBySector falls back to fetchAll, so memory isn't bounded.
See TiledImageLayer.cachedSourceInfo — same shape for WFS feature layers.
Force every emitted renderable's altitude mode. null (default) picks AltitudeMode.ABSOLUTE when the cached geometry has any non-null z, else AltitudeMode.CLAMP_TO_GROUND. Set explicitly when the source has z values that shouldn't be rendered as altitude (e.g. shapefile measure-z, GeoJSON elevation values you want flattened).
Fallback fill colour written when a feature has no fill property. Same null semantics as defaultLineColor.
Fallback line colour written when a feature has no stroke property. null (default) leaves the renderable's existing outline alone — preserves the layer's shapeAttributes template (e.g. Shapefile's translucent fill) when the source has no simplestyle keys.
Visibility threshold (eye-distance, meters) set on every emitted Label. 0.0 (default) keeps labels visible at any distance.
Vector content bounding sector — real data availability can be smaller than the tile grid. Full sphere by default; tiled layers skip tiles outside it. Cache reopen narrows it from the persisted content bbox; bulk download widens and persists it. Mirrors earth.worldwind.globe.elevation.coverage.ElevationCoverage.sector.
Default ShapeAttributes applied to every Polygon / Path this layer builds. null leaves the renderable at its own default (white fill, black outline). Set this to colour an entire layer in one go without writing a per-feature lambda — the per- feature customLogicToApplyProperties still gets a chance to override attributes after this default is installed.
Functions
Makes a fresh copy carrying this layer's configuration; source, renderables, and refresh driver are not shared.
Pull rows from source and atomically replace this layer's renderables. Accumulates the full set before swapping in to avoid mid-load flicker (paginated WFS responses still complete in one swap). Per renderable: install applyFeatureStyle defaults if autoApplyStyle, then run customLogicToApplyProperties.
See setOfflineOnly on TiledImageLayer. Dispatches by VectorLayer subtype to reach the right source field. No-op for unknown subtypes.