From 22b53aa89b04d8125e2be7d60590c072b653f2dc Mon Sep 17 00:00:00 2001 From: "im.ivan.matveev@gmail.com" Date: Tue, 25 Nov 2025 01:32:19 +0200 Subject: [PATCH 1/4] update mapgl to version 1.66.0 --- package-lock.json | 8 ++++---- package.json | 2 +- src/control/control.ts | 2 +- src/utils.ts | 1 + 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 633c9d8..eb5a97f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "2.1.3", "license": "BSD-2-Clause", "devDependencies": { - "@2gis/mapgl": "^1.25.0", + "@2gis/mapgl": "^1.66.0", "@2gis/ts-docs-generator": "^0.1.0", "@types/jest": "^27.4.0", "@types/jest-image-snapshot": "^4.3.1", @@ -47,9 +47,9 @@ } }, "node_modules/@2gis/mapgl": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/@2gis/mapgl/-/mapgl-1.53.0.tgz", - "integrity": "sha512-lT+XX1grV/Qg7rVtBfAPkXl+0c5JIzBr9j/+LcEURLKacfPOwAhlEh2lEY+O+YFA2IPi91FXYHs031IF3d/omA==", + "version": "1.66.0", + "resolved": "https://registry.npmjs.org/@2gis/mapgl/-/mapgl-1.66.0.tgz", + "integrity": "sha512-l7XqvFmxbBnAGLso2QgG3/vxXqt4xMLDDWmDv7Hfzefd+skWqVWrbNKG5qGQSm1E0xQBkcS0Wimlju7c30/IsQ==", "dev": true, "dependencies": { "@types/geojson": "^7946.0.7" diff --git a/package.json b/package.json index 3347273..4d10ae5 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ }, "devDependencies": { "@2gis/ts-docs-generator": "^0.1.0", - "@2gis/mapgl": "^1.25.0", + "@2gis/mapgl": "^1.66.0", "@types/jest": "^27.4.0", "@types/jest-image-snapshot": "^4.3.1", "@types/puppeteer": "^5.4.4", diff --git a/src/control/control.ts b/src/control/control.ts index 8a45842..679d9fc 100644 --- a/src/control/control.ts +++ b/src/control/control.ts @@ -31,7 +31,7 @@ export class Control { this._wrap.style.userSelect = 'none'; this._wrap.innerHTML = content; - this._position = position; + this._position = position ?? 'topLeft'; this._controlPane = (map as any)._controlPane; this._container = this._controlPane.getContainerByPosition(position); this._container?.append(this._wrap); diff --git a/src/utils.ts b/src/utils.ts index 7befa7c..9e17f89 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -124,6 +124,7 @@ export function createHtmlMarker( html: `
Date: Tue, 25 Nov 2025 09:36:00 +0200 Subject: [PATCH 2/4] update mapgl to version 1.67.0 --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index eb5a97f..447bd79 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "2.1.3", "license": "BSD-2-Clause", "devDependencies": { - "@2gis/mapgl": "^1.66.0", + "@2gis/mapgl": "^1.67.0", "@2gis/ts-docs-generator": "^0.1.0", "@types/jest": "^27.4.0", "@types/jest-image-snapshot": "^4.3.1", @@ -47,9 +47,9 @@ } }, "node_modules/@2gis/mapgl": { - "version": "1.66.0", - "resolved": "https://registry.npmjs.org/@2gis/mapgl/-/mapgl-1.66.0.tgz", - "integrity": "sha512-l7XqvFmxbBnAGLso2QgG3/vxXqt4xMLDDWmDv7Hfzefd+skWqVWrbNKG5qGQSm1E0xQBkcS0Wimlju7c30/IsQ==", + "version": "1.67.0", + "resolved": "https://registry.npmjs.org/@2gis/mapgl/-/mapgl-1.67.0.tgz", + "integrity": "sha512-oXsIP0h2nB/mvCOgkKKlOvaKKt2c9Z3md5CR2Qvd/PSQOVUr8BLIyoKwjTsr/DQ8bIGcFBRE5Xnhn1lec6ZsSg==", "dev": true, "dependencies": { "@types/geojson": "^7946.0.7" diff --git a/package.json b/package.json index 4d10ae5..fe93ac7 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ }, "devDependencies": { "@2gis/ts-docs-generator": "^0.1.0", - "@2gis/mapgl": "^1.66.0", + "@2gis/mapgl": "^1.67.0", "@types/jest": "^27.4.0", "@types/jest-image-snapshot": "^4.3.1", "@types/puppeteer": "^5.4.4", From ee815aa6ccd2232c78e4d558f842605aa3721f3c Mon Sep 17 00:00:00 2001 From: "im.ivan.matveev@gmail.com" Date: Wed, 26 Nov 2025 13:40:18 +0200 Subject: [PATCH 3/4] marker burning area property --- demo/index.ts | 2 ++ src/control/index.ts | 6 ++++++ src/joint.ts | 3 ++- src/ruler.ts | 8 ++++++++ src/utils.ts | 3 ++- 5 files changed, 20 insertions(+), 2 deletions(-) diff --git a/demo/index.ts b/demo/index.ts index 0685308..994d233 100644 --- a/demo/index.ts +++ b/demo/index.ts @@ -37,6 +37,7 @@ if (form) { window.control = new RulerControl(map, { position: 'centerRight', mode, + markerBurningArea: 8 }); window.ruler = window.control.getRuler(); }; @@ -64,6 +65,7 @@ if (languageSelect) { window.control = new RulerControl(map, { position: 'centerRight', mode: 'polygon', + markerBurningArea: 8 }); window.ruler = window.control.getRuler(); window.control.getRuler().setPoints([ diff --git a/src/control/index.ts b/src/control/index.ts index 325f931..8b1d958 100644 --- a/src/control/index.ts +++ b/src/control/index.ts @@ -35,6 +35,11 @@ export interface RulerControlOptions extends mapgl.ControlOptions { * Specifies whether the ruler should be enabled after control initialization. */ enabled?: boolean; + + /** + * Specifies the size of the marker burning area within the radius of the ruler joint. + */ + markerBurningArea?: RulerOptions['markerBurningArea']; } /** @@ -82,6 +87,7 @@ export class RulerControl extends Control { polylineOptions: options.polylineOptions, jointFactory: options.jointFactory, snapPointFactory: options.snapPointFactory, + markerBurningArea: options.markerBurningArea }); this.render(); diff --git a/src/joint.ts b/src/joint.ts index 7d3bd11..61d55f2 100644 --- a/src/joint.ts +++ b/src/joint.ts @@ -43,8 +43,9 @@ export class Joint extends Evented { distance: number, enableOnInit, private showLabel: boolean, + private markerBurningArea?: number, private renderCustomMarker: JointFactory = (map, coordinates, { isFirst, interactive }) => - createHtmlMarker(map, coordinates, { big: isFirst, interactive }), + createHtmlMarker(map, coordinates, {big: isFirst, interactive, markerBurningArea: this.markerBurningArea}), ) { super(); this.id = ++lastId; diff --git a/src/ruler.ts b/src/ruler.ts index 52bc7c5..933632b 100644 --- a/src/ruler.ts +++ b/src/ruler.ts @@ -85,6 +85,11 @@ export interface RulerOptions { jointFactory?: JointFactory; snapPointFactory?: SnapPointFactory; + + /** + * Specifies the size of the marker burning area within the radius of the ruler joint. + */ + markerBurningArea?: number; } interface RedrawFlags { @@ -114,6 +119,7 @@ export class Ruler extends Evented { private polylineOptions: RulerPolylineOptions; private jointFactory?: RulerOptions['jointFactory']; private snapPointFactory?: RulerOptions['snapPointFactory']; + private markerBurningArea?: RulerOptions['markerBurningArea']; /** * Example: @@ -157,6 +163,7 @@ export class Ruler extends Evented { this.polylineOptions = options.polylineOptions ?? {}; this.jointFactory = options.jointFactory; this.snapPointFactory = options.snapPointFactory; + this.markerBurningArea = options.markerBurningArea; options.points?.forEach((point, i) => this.addPoint(point, i)); @@ -303,6 +310,7 @@ export class Ruler extends Evented { distance, this.enabled, this.labelVisibilitySettings.perimeter, + this.markerBurningArea, this.jointFactory, ); diff --git a/src/utils.ts b/src/utils.ts index 9e17f89..ff6adf4 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -117,6 +117,7 @@ export function createHtmlMarker( big?: boolean; interactive?: boolean; style?: string; + markerBurningArea?: number; }, ): mapgl.HtmlMarker { return new mapgl.HtmlMarker(map, { @@ -124,7 +125,7 @@ export function createHtmlMarker( html: `
Date: Wed, 26 Nov 2025 13:48:51 +0200 Subject: [PATCH 4/4] code style changes --- demo/index.ts | 4 ++-- src/control/index.ts | 2 +- src/joint.ts | 6 +++++- src/utils.ts | 4 +++- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/demo/index.ts b/demo/index.ts index 994d233..3e3f5c5 100644 --- a/demo/index.ts +++ b/demo/index.ts @@ -37,7 +37,7 @@ if (form) { window.control = new RulerControl(map, { position: 'centerRight', mode, - markerBurningArea: 8 + markerBurningArea: 8, }); window.ruler = window.control.getRuler(); }; @@ -65,7 +65,7 @@ if (languageSelect) { window.control = new RulerControl(map, { position: 'centerRight', mode: 'polygon', - markerBurningArea: 8 + markerBurningArea: 8, }); window.ruler = window.control.getRuler(); window.control.getRuler().setPoints([ diff --git a/src/control/index.ts b/src/control/index.ts index 8b1d958..a3d6e15 100644 --- a/src/control/index.ts +++ b/src/control/index.ts @@ -87,7 +87,7 @@ export class RulerControl extends Control { polylineOptions: options.polylineOptions, jointFactory: options.jointFactory, snapPointFactory: options.snapPointFactory, - markerBurningArea: options.markerBurningArea + markerBurningArea: options.markerBurningArea, }); this.render(); diff --git a/src/joint.ts b/src/joint.ts index 61d55f2..0b4f4bd 100644 --- a/src/joint.ts +++ b/src/joint.ts @@ -45,7 +45,11 @@ export class Joint extends Evented { private showLabel: boolean, private markerBurningArea?: number, private renderCustomMarker: JointFactory = (map, coordinates, { isFirst, interactive }) => - createHtmlMarker(map, coordinates, {big: isFirst, interactive, markerBurningArea: this.markerBurningArea}), + createHtmlMarker(map, coordinates, { + big: isFirst, + interactive, + markerBurningArea: this.markerBurningArea, + }), ) { super(); this.id = ++lastId; diff --git a/src/utils.ts b/src/utils.ts index ff6adf4..f2a3e37 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -125,7 +125,9 @@ export function createHtmlMarker( html: `