@geoblocks/edittrack
Advanced tools
Comparing version 1.3.12 to 1.3.13
import { fromLonLat, toLonLat } from 'ol/proj.js'; | ||
import { distance } from 'ol/coordinate'; | ||
export default class GraphHopper { | ||
@@ -11,5 +12,7 @@ /** | ||
maxDistance; | ||
maxTolerance; | ||
constructor(options) { | ||
this.nearestUrl = options.url; | ||
this.maxDistance = options.maxDistance ?? 20; | ||
this.maxDistance = options.maxDistance ?? Infinity; | ||
this.maxTolerance = options.maxTolerance ?? Infinity; | ||
this.map = options.map; | ||
@@ -34,6 +37,14 @@ } | ||
const newCoordinates = fromLonLat(json.coordinates, mapProjection); | ||
if (this.maxTolerance !== Infinity && !this.isInTolerance(geom.getCoordinates(), newCoordinates)) { | ||
return undefined; | ||
} | ||
geom.setCoordinates(newCoordinates); | ||
point.set('snapped', true); | ||
} | ||
isInTolerance(pointA, pointB) { | ||
const pointAPixel = this.map.getPixelFromCoordinate(pointA); | ||
const pointBPixel = this.map.getPixelFromCoordinate(pointB); | ||
return distance(pointAPixel, pointBPixel) < this.maxTolerance; | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhIb3BwZXJTbmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NuYXBwZXIvR3JhcGhIb3BwZXJTbmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBZ0JoRCxNQUFNLENBQUMsT0FBTyxPQUFPLFdBQVc7SUFFOUI7Ozs7T0FJRztJQUNLLFVBQVUsQ0FBUztJQUVuQixHQUFHLENBQU07SUFFVCxXQUFXLENBQVM7SUFHNUIsWUFBWSxPQUEyQjtRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBcUI7UUFDbkMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekQsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDakUsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsTUFBTSxRQUFRLEdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN2QyxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMzQix1QkFBdUI7WUFDdkIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxvQkFBb0I7WUFDcEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNGIn0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhIb3BwZXJTbmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NuYXBwZXIvR3JhcGhIb3BwZXJTbmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBSWhELE9BQU8sRUFBYyxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFtQnJELE1BQU0sQ0FBQyxPQUFPLE9BQU8sV0FBVztJQUU5Qjs7OztPQUlHO0lBQ0ssVUFBVSxDQUFTO0lBRW5CLEdBQUcsQ0FBTTtJQUVULFdBQVcsQ0FBUztJQUVwQixZQUFZLENBQVM7SUFFN0IsWUFBWSxPQUEyQjtRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQztRQUNuRCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksUUFBUSxDQUFDO1FBQ3JELElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFxQjtRQUNuQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6RCxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDdEUsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqRSxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxNQUFNLFFBQVEsR0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3ZDLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNCLHVCQUF1QjtZQUN2QixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLG9CQUFvQjtZQUNwQixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbkUsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDakcsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFrQixFQUFFLE1BQWtCO1FBQ2xELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1RCxPQUFPLFFBQVEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUNoRSxDQUFDO0NBQ0YifQ== |
import type { Snapper } from '.'; | ||
import type { Feature, Map } from 'ol'; | ||
import type { Point } from 'ol/geom'; | ||
import { Coordinate } from 'ol/coordinate'; | ||
type GraphHopperOptions = { | ||
@@ -9,5 +10,10 @@ map: Map; | ||
* The maximum distance in meters between the initial coordinates and the snapped ones. | ||
* Snapping only happen when the distance is lower than this limit. | ||
* Snapping only happens when the distance is lower than this limit. | ||
*/ | ||
maxDistance?: number; | ||
/** | ||
* The maximum distance in pixels between the initial coordinates and the snapped ones. | ||
* Snapping only happens when the distance is lower than this limit. | ||
*/ | ||
maxTolerance?: number; | ||
}; | ||
@@ -23,6 +29,8 @@ export default class GraphHopper implements Snapper { | ||
private maxDistance; | ||
private maxTolerance; | ||
constructor(options: GraphHopperOptions); | ||
snapPoint(point: Feature<Point>): Promise<any>; | ||
isInTolerance(pointA: Coordinate, pointB: Coordinate): boolean; | ||
} | ||
export {}; | ||
//# sourceMappingURL=GraphHopperSnapper.d.ts.map |
{ | ||
"name": "@geoblocks/edittrack", | ||
"version": "1.3.12", | ||
"version": "1.3.13", | ||
"description": "Geoblocks edittrack", | ||
@@ -5,0 +5,0 @@ "scripts": { |
@@ -5,2 +5,3 @@ import {fromLonLat, toLonLat} from 'ol/proj.js'; | ||
import type { Point } from 'ol/geom'; | ||
import { Coordinate, distance } from 'ol/coordinate'; | ||
@@ -12,5 +13,11 @@ type GraphHopperOptions = { | ||
* The maximum distance in meters between the initial coordinates and the snapped ones. | ||
* Snapping only happen when the distance is lower than this limit. | ||
* Snapping only happens when the distance is lower than this limit. | ||
*/ | ||
maxDistance?: number; | ||
/** | ||
* The maximum distance in pixels between the initial coordinates and the snapped ones. | ||
* Snapping only happens when the distance is lower than this limit. | ||
*/ | ||
maxTolerance?: number; | ||
}; | ||
@@ -32,6 +39,8 @@ | ||
private maxTolerance: number; | ||
constructor(options: GraphHopperOptions) { | ||
this.nearestUrl = options.url; | ||
this.maxDistance = options.maxDistance ?? 20; | ||
this.maxDistance = options.maxDistance ?? Infinity; | ||
this.maxTolerance = options.maxTolerance ?? Infinity; | ||
this.map = options.map; | ||
@@ -57,5 +66,15 @@ } | ||
const newCoordinates = fromLonLat(json.coordinates, mapProjection); | ||
if (this.maxTolerance !== Infinity && !this.isInTolerance(geom.getCoordinates(), newCoordinates)) { | ||
return undefined; | ||
} | ||
geom.setCoordinates(newCoordinates); | ||
point.set('snapped', true); | ||
} | ||
isInTolerance(pointA: Coordinate, pointB: Coordinate): boolean { | ||
const pointAPixel = this.map.getPixelFromCoordinate(pointA); | ||
const pointBPixel = this.map.getPixelFromCoordinate(pointB); | ||
return distance(pointAPixel, pointBPixel) < this.maxTolerance; | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
270423
4151