Skip to main content

Merge Parts Mode

merge_parts combines several polygon/multipolygon features into a single MultiPolygon feature. Unlike Union, merge does not dissolve shared boundaries — each input becomes a part of the resulting multipolygon. It is a selection-gated mode that requires two or more selected features: select them first (see Select Mode), then activate Merge Parts.

When features are merged, the originals are removed (gm:remove) and a single combined feature is created (gm:create).

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

Programmatic API

// Merge two (or more) features by id into one multipolygon
const result = await map.gm.edit.merge(['poly-a', 'poly-b']);

if (result.ok) {
console.log('Merged feature:', result.feature);
} else {
console.warn('Rejected:', result.reason);
}

The following methods are available on map.gm:

MethodReturnsDescription
enableMode('edit', 'merge_parts')PromiseEnables Merge Parts Mode.
disableMode('edit', 'merge_parts')PromiseDisables Merge Parts Mode.
toggleMode('edit', 'merge_parts')PromiseToggles Merge Parts Mode.
isModeEnabled('edit', 'merge_parts')BooleanReturns true if Merge Parts Mode is enabled. false when disabled.

The following events are available on a map instance:

EventParamsDescriptionOutput
gm:merge_partseventFired when features are merged.map, feature, shape
gm:createeventFired for the new combined multipolygon feature.map, feature, shape
gm:removeeventFired for each original feature that is removed.map, feature, shape
map.on('gm:merge_parts', (event) => {
console.log('Merged into:', event.feature?.id);
});

Live Merge Parts Example

Two separate polygons are loaded. With the Select tool, click the first polygon, then Ctrl/Cmd-click the second to add it to the selection. With both selected, activate Merge Parts to combine them into a single multipolygon.

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