Skip to main content

Remove Ring Mode

remove_ring removes a single ring from a polygon or multipolygon — either an interior ring (a hole) or a whole part of a multipolygon (a part is only removable when the feature has more than one). It is a selection-gated mode: select the feature first (see Select Mode), then activate Remove Ring and click the ring you want to remove.

map.gm.enableMode('edit', 'remove_ring');
map.gm.disableMode('edit', 'remove_ring');
map.gm.toggleMode('edit', 'remove_ring');
map.gm.isModeEnabled('edit', 'remove_ring');

Programmatic API

// Remove the first hole of the first part
const result = await map.gm.edit.removeRing('subedit-polygon', {
kind: 'hole',
partIndex: 0,
ringIndex: 0,
});

// Or remove a whole part of a multipolygon
// await map.gm.edit.removeRing('subedit-polygon', { kind: 'part', partIndex: 1 });

if (result.ok) {
console.log('Updated feature:', result.feature);
} else {
console.warn('Rejected:', result.reason); // e.g. 'no_target'
}

The ringTarget is one of:

type RemovableRingTarget =
| { kind: 'hole'; partIndex: number; ringIndex: number }
| { kind: 'part'; partIndex: number };

The following methods are available on map.gm:

MethodReturnsDescription
enableMode('edit', 'remove_ring')PromiseEnables Remove Ring Mode.
disableMode('edit', 'remove_ring')PromiseDisables Remove Ring Mode.
toggleMode('edit', 'remove_ring')PromiseToggles Remove Ring Mode.
isModeEnabled('edit', 'remove_ring')BooleanReturns true if Remove Ring Mode is enabled. false when disabled.

The following events are available on a map instance:

EventParamsDescriptionOutput
gm:remove_ringeventFired when a ring or part is removed from a feature.map, feature, shape
gm:operation_rejectedeventFired when the operation is rejected.map, mode, reason
map.on('gm:remove_ring', (event) => {
console.log('Ring removed from:', event.feature?.id);
});

Live Remove Ring Example

This polygon already has a hole. Click the polygon to select it, activate Remove Ring, then click the inner ring to remove it.

Building something complex? Our team can help with architecture and integration. Get in touch →