WME E40 Geometry

A script that allows aligning, scaling, and copying POI geometry

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

You will need to install an extension such as Tampermonkey to install this script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

Autore
Anton Shevchuk
Installazioni giornaliere
1
Installazioni totali
450
Valutazione
1 0 0
Versione
0.10.6
Creato il
07/08/2019
Aggiornato il
29/03/2026
Dimensione
68,1 KB
Licenza
MIT
Applica a

WME 🇺🇦 E40

User script for Waze Map Editor. Create additional panel with buttons for change Place geometry in one click.

Options for a Polygon

Options for a Point

Options for Editors Level 3+

Change the geometry

Development

Install & Build

npm install
npm run build       # one-off build → dist/WME-E40.user.js
npm run watch       # rebuild on changes

Project Structure

Source is written in TypeScript under src/, built with Rollup into a single IIFE at dist/WME-E40.user.js.

src/
├── meta.ts          # userscript header (comment block)
├── style.css        # plain CSS
├── globals.d.ts     # WME runtime globals
├── translations.ts  # i18n (en, uk, ru)
├── types.ts         # road type constants
├── settings.ts      # default settings
├── layers.ts        # navigation vector layer config
├── buttons.ts       # button definitions (place, point, tab)
├── geo-utils.ts     # GeoUtils — spherical geometry math
├── geometry.ts      # polygon creation and manipulation
├── e40.ts           # E40 class (main logic)
├── helpers.ts       # standalone wrapper functions
└── index.ts         # bootstrap entry point

Module Guide

Module Responsibility
translations.ts NAME, REQUIRED_LEVEL, TRANSLATION (3 languages)
types.ts Road type numeric constants (TYPES.street, TYPES.freeway, etc.)
settings.ts Default options (navigation point visibility)
layers.ts Layer style rules for navigation vector visualization
buttons.ts Three button sets: getPlaceButtons() (polygon tools), getPointButtons() (point-to-shape), getTabButtons() (batch operations for rank 3+)
geo-utils.ts GeoUtils class — bearing, angle, distance, intersection calculations on the sphere
geometry.ts createCirclePolygon, createSquarePolygon, simplifyPolygon, normalizeRightAngles
e40.ts E40 class — UI panels, keyboard shortcuts, layer management, all geometry operations
helpers.ts Thin wrappers that delegate to the E40 instance (used by button callbacks)
index.ts Bootstrap — registers translations/CSS, creates E40 instance on bootstrap.wme

Shortcuts

Shortcut Description
Shift+1 Smooth selected POI(s)
Shift+2 Orthogonalize selected POI(s)
None Simplify selected POI(s) (tolerance = 0.00001)
None Simplify selected POI(s) (tolerance = 0.00003)
None Simplify selected POI(s) (tolerance = 0.00005)
None Copy and paste selected POI(s)
Shift+3 Enable Rotation for selected Place
Shift+4 Enable Scale for selected Place
Shift+5 Scale selected POI(s) to 500m²
Shift+6 Scale selected POI(s) to 650m²
Shift+7 Scale selected POI(s) to 650m² if the square lower than 650m²

Links

Author homepage: https://anton.shevchuk.name/
Author pet projects: https://hohli.com/
Support author: https://donate.hohli.com/
Script homepage: https://github.com/AntonShevchuk/wme-e40/
GreasyFork: https://greasyfork.org/uk/scripts/388271-wme-e40-geometry