Skip to content

v11.28.0-rc.1

Pre-release
Pre-release

Choose a tag to compare

Features ✨ and improvements 🏁

  • Line borders can now use a gradient along the line
    The new experimental LineLayer.lineBorderGradient colors a line feature's border along its length. Define it with a step or interpolate expression over line-progress. It takes precedence over lineBorderColor, needs lineBorderWidth above zero, and requires a GeoJSON source with lineMetrics set to true. Route lines can now give upcoming legs a different casing color than the active leg.
  • verticalFov accepts values down to 1 degree
    The vertical field of view now spans 1 degree to 90 degrees, widened from a lower bound of 11 degrees. Narrow values align a map overlay with a highly magnified camera or video feed. Shadows can still show precision artifacts below the old limit.

Bug fixes 🐞

  • View annotations misplaced on overlapping route sections near tile boundaries
    During a zoom transition, the collision test for ViewAnnotationManager.viewAnnotationAvoidLayers checked tile bounds with a larger radius than it used to place collision stamps. It found nothing to collide with and passed, so an annotation landed on an overlapping route section. The bounds check now uses the stamp cell size, so the SDK rejects the placement.

  • Elevated road-markup lines could flicker against the surface beneath them
    A line using LineLayer.lineElevationReference set to .hdRoadMarkup sits at nearly the same depth as the fill below it. Where the line width changed direction, its geometry could protrude and flicker. The renderer now biases the line depth 0.5 m toward the camera.

  • 3D models with a zero alpha vertex color rendered black
    The renderer read a model's vertex alpha channel for per-vertex ambient occlusion, assuming the channel was always white. Models that take their color from the style and ship a zero alpha turned black in a ModelLayer. The alpha channel now applies only to level-of-detail meshes.

  • Fullwidth vertical bar rotated twice in vertical text
    The CJK character rotation work in 11.27.0 substituted a horizontal bar and then rotated it again. The character now renders with a single rotation.

  • Applying an offline patch could fail when disk space ran short
    TileStore checked its quota against the downloaded patch, then checked the full file only after applying it. The disk could be full by then, and the write failed. TileStore now estimates the patched size and evicts data beforehand.

  • Offline imports could keep data older than what is already stored
    When a stored entry expired, TileStore imported the package entry unconditionally, assuming downloaded data is newer. Package data can predate what is on disk. TileStore now compares expiration times and imports only newer data, so a repeat import changes nothing.

  • Throttled tile downloads retried in lockstep
    On an HTTP 429 response, TileStore waited exactly the server's Retry-After delay. Downloads throttled together retried together, re-spiking the rate and drawing another 429, which could starve tiles for several minutes. The delay now carries jitter, so retries spread out.

Performance improvements 🚀

  • Raster tiles upload to the GPU asynchronously
    Raster layers now upload vertex buffers, index buffers, and textures through the asynchronous path other layers use. A tile draws after its upload finishes instead of holding up the render pass, which shortens frame stalls when imagery streams in.

  • Critical tile loads run ahead of other TileStore work
    TileStore now schedules loads marked critical priority at the front of its worker queue. Map tiles arrive sooner when a background download or offline operation is also in flight.

Dependencies

  • Update MapboxCommon to 24.28.0-rc.1.
  • Update MapboxCoreMaps to 11.28.0-rc.1.

Dependency requirements:

  • Compatible version of Xcode: 26.3