mapview_interactions_zoom.mjs
/**
## Mapview.interactions.zoom()
@module /mapview/interactions/zoom
@param {Object} params
The params object argument.
*/
export default function (params) {
const mapview = this;
// Finish the current interaction.
mapview.interaction?.finish();
mapview.interaction = {
finish: finish,
Layer: new ol.layer.Vector({
source: new ol.source.Vector(),
}),
// Spread params argument.
...params,
};
mapview.interaction.Layer.getSource().clear();
mapview.Map.addLayer(mapview.interaction.Layer);
mapview.Map.getTargetElement().style.cursor = 'zoom-in';
mapview.interaction.interaction = new ol.interaction.Draw({
source: mapview.interaction.Layer.getSource(),
type: 'Circle',
geometryFunction: ol.interaction.Draw.createBox(),
style: {
'stroke-color': '#ddd',
'fill-color': '#fff9',
},
});
mapview.interaction.interaction.on('drawend', (e) => {
mapview.fitView(e.feature.getGeometry().getExtent());
finish();
});
mapview.Map.addInteraction(mapview.interaction.interaction);
function finish() {
mapview.Map.getTargetElement().style.cursor = 'auto';
mapview.Map.removeInteraction(mapview.interaction.interaction);
mapview.Map.removeLayer(mapview.interaction.Layer);
mapview.interaction.Layer.getSource().clear();
mapview.interaction.callback?.();
}
}