Skip to main content

The new shared static-circle channel retains independent outer strokes and uses the actual projective footprint after alignment/scale and translation for drawing/queries. Pitched/globe strokes follow the selected orientation and distance scaling. Radius parameters below describe CSS style semantics, rather than a fixed screen circle in every projection. Seecircle styles.

Circle stroke and opacity

circle-stroke-opacity defaults to1, independently of circle-opacity. It supports shared numeric, property, state and zoom expressions within0–1. The fill radius is circle-radius and the stroke extends outward by circle-stroke-width in all three views.

map.addLayer({ id: 'points', type: 'circle', source: 'places',
  paint: { 'circle-radius': 10, 'circle-color': 'blue',
    'circle-stroke-width': 6, 'circle-stroke-color': 'red',
    'circle-stroke-opacity': 0.5 }
});
await map.sqs.flush({ render: true });

Queries include the visible stroke's outer radius. Transparent strokes leave only the fill range; fully transparent circles have no hit. Queries use a feature envelope: the interior of a hollow circle may still hit its feature. Per-pixel alpha picking is not provided. Projection or pitch changes retain outer strokes. Direct3D marker callers also use outer strokes.

Native, browser main-thread and Worker actual pixels were checked locally. Raw SDK callers use view.flush(). Device and formal-release acceptance are separate.