UNPKG

ole

Version:

OpenLayers Editor

22 lines (21 loc) 1.02 kB
import { MultiPoint } from 'ol/geom'; /** * Removes the closest node to a given coordinate from a given geometry. * @private * @param {ol.Geometry} geometry An openlayers geometry. * @param {ol.Coordinate} coordinate Coordinate. * @returns {ol.Geometry.MultiPoint} An openlayers MultiPoint geometry. */ const getShiftedMultipoint = (geometry, coordinate) => { // Include all but the closest vertex to the coordinate (e.g. at mouse position) // to prevent snapping on mouse cursor node const isPolygon = geometry.getType() === 'Polygon'; const shiftedMultipoint = new MultiPoint(isPolygon ? geometry.getCoordinates()[0] : geometry.getCoordinates()); const drawNodeCoordinate = shiftedMultipoint.getClosestPoint(coordinate); // Exclude the node being modified shiftedMultipoint.setCoordinates(shiftedMultipoint .getCoordinates() .filter((coord) => coord.toString() !== drawNodeCoordinate.toString())); return shiftedMultipoint; }; export default getShiftedMultipoint;