@deepuppeds/leaflet-geoman v2.14.1
Opt-In
If you want to use Leaflet-Geoman as opt-in, call the following function right after importing:
L.PM.setOptIn(true);And to disable it:
L.PM.setOptIn(false);If you have enabled opt-in before you init the map, you need to specify pmIgnore: false in the map options:
const map = L.map('map', { pmIgnore: false });All layers will be ignored by Leaflet-Geoman, unless you specify pmIgnore: false on a layer:
L.marker([51.50915, -0.096112], { pmIgnore: false }).addTo(map);Newly drawn layers will be ignored as well.
To prevent this you can add the following event handler:
map.on('pm:create', (e) => {
e.layer.options.pmIgnore = false;
L.PM.reInitLayer(e.layer);
});Leaflet-Geoman Toolbar
Draw Mode
Use Draw Mode on a map like this:
// enable polygon Draw Mode
map.pm.enableDraw('Polygon', {
snappable: true,
snapDistance: 20,
});
// disable Draw Mode
map.pm.disableDraw();Currently available shapes are Marker, CircleMarker, Circle, Line, Rectangle, Polygon, Text, Cut, CutCircle⭐ and Split⭐.
The following methods are available on map.pm:
| Method | Returns | Description |
|---|---|---|
enableDraw(shape,options) | - | Enable Draw Mode with the passed shape. The options are optional. |
| disableDraw() | - | Disable Draw Mode. |
| Draw.getShapes() | Array | Array of available shapes. |
| Draw.getActiveShape() | String | Returns the active shape. |
| globalDrawModeEnabled() | Boolean | Returns true if global Draw Mode is enabled. false when disabled. |
setPathOptions(options, optionsModifier) | - | Customize the style of the drawn layer. Only for L.Path layers. Shapes can be excluded with a ignoreShapes array or merged with the current style with merge: true in optionsModifier Details. |
setGlobalOptions(options) | - | Set globalOptions and apply them. |
| applyGlobalOptions() | - | Apply the current globalOptions to all existing layers. |
| getGlobalOptions() | Object | Returns the globalOptions. |
getGeomanLayers(Boolean) | Array | Returns all Leaflet-Geoman layers on the map as array. Pass true to get a L.FeatureGroup. |
getGeomanDrawLayers(Boolean) | Array | Returns all drawn Leaflet-Geoman layers on the map as array. Pass true to get a L.FeatureGroup. |
Draw..setOptions(options) | - | Applies the options to the drawing shape and calls setStyle. map.pm.Draw.Line.setOptions(options). |
Draw..setStyle(options) | - | Applies the styles (templineStyle, hintlineStyle, pathOptions, markerStyle) to the drawing layer. map.pm.Draw.Line.setStlye(options). |
See the available options in the table below.
| Option | Default | Description |
|---|---|---|
| snappable | true | Enable snapping to other layers vertices for precision drawing. Can be disabled by holding the ALT key. |
| snapDistance | 20 | The distance to another vertex when a snap should happen. |
| snapMiddle | false | Allow snapping in the middle of two vertices (middleMarker). |
| snapSegment | true | Allow snapping between two vertices. |
| requireSnapToFinish | false | Require the last point of a shape to be snapped. |
| tooltips | true | Show helpful tooltips for your user. |
| allowSelfIntersection | true | Allow self intersections. |
| templineStyle | { color: '#3388ff' }, | Leaflet path options for the lines between drawn vertices/markers. |
| hintlineStyle | { color: '#3388ff', dashArray: [5, 5] } | Leaflet path options for the helper line between last drawn vertex and the cursor. |
| pathOptions | null | Leaflet path options for the drawn layer (Only for L.Path layers). |
| markerStyle | { draggable: true } | Leaflet marker options (only for drawing markers). |
| cursorMarker | true | Show a marker at the cursor. |
| finishOn | null | Leaflet layer event to finish the drawn shape, like 'dblclick'. Here's a list. snap is also an option for Line, Polygon and Rectangle. |
| hideMiddleMarkers | false | Hide the middle Markers in Edit Mode from Polyline and Polygon. |
| minRadiusCircle | null | Set the min radius of a Circle. |
| maxRadiusCircle | null | Set the max radius of a Circle. |
| minRadiusCircleMarker | null | Set the min radius of a CircleMarker when editable is active. |
| maxRadiusCircleMarker | null | Set the max radius of a CircleMarker when editable is active. |
| editable | false | Makes a CircleMarker editable like a Circle. |
| markerEditable | true | Markers and CircleMarkers are editable during the draw-session (you can drag them around immediately after drawing them). |
| continueDrawing | false / true | Draw Mode stays enabled after finishing a layer to immediately draw the next layer. Defaults to true for Markers and CircleMarkers and false for all other layers. |
| rectangleAngle | 0 | Rectangle can drawn with a rotation angle 0-360 degrees |
| layersToCut | [] | Cut-Mode: Only the passed layers can be cut. Cutted layers are removed from the Array until no layers are left anymore and cutting is working on all layers again. |
| textOptions | {} | Text Layer options. Look into textOptions. |
| closedPolygonEdge | false | Closes the Polygon while drawing ⭐. |
| closedPolygonFill | false | Shows the Polygon fill while drawing ⭐. |
| autoTracing | false | Enables auto tracing while drawing ⭐. |
| allowCircleCut | true | Allow Cutting of a Circle ⭐. |
This options can only set over map.pm.setGlobalOptions({}):
| Option | Default | Description |
|---|---|---|
| layerGroup | map | Add the created layers to a layergroup instead to the map. |
You can listen to map events to hook into the drawing procedure like this:
map.on('pm:drawstart', (e) => {
console.log(e);
});Here's a list of map events you can listen to:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:globaldrawmodetoggled | e | Fired when Drawing Mode is toggled. | enabled, shape, map |
| pm:drawstart | e | Called when Draw Mode is enabled. Payload includes the shape type and working layer. | shape, workingLayer |
| pm:drawend | e | Called when Draw Mode is disabled. Payload includes the shape type. | shape |
| pm:create | e | Called when a shape is drawn/finished. Payload includes shape type and the drawn layer. | shape, layer |
There are also several events for layers during draw. Register an event like this:
// listen to vertexes being added to currently drawn layer (called workingLayer)
map.on('pm:drawstart', ({ workingLayer }) => {
workingLayer.on('pm:vertexadded', (e) => {
console.log(e);
});
});Here's a list of layer events you can listen to:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:vertexadded | e | Called when a new vertex is added. Payload includes the new vertex, it's marker, index, working layer and shape type. | shape, workingLayer, marker, latlng |
| pm:snapdrag | e | Fired during a marker move/drag. Payload includes info about involved layers and snapping calculation. | shape, distance, layer = workingLayer, marker, layerInteractedWith, segment, snapLatLng |
| pm:snap | e | Fired when a vertex is snapped. Payload is the same as in snapdrag. | shape, distance, layer = workingLayer, marker, layerInteractedWith, segment, snapLatLng |
| pm:unsnap | e | Fired when a vertex is unsnapped. Payload is the same as in snapdrag. | shape, distance, layer = workingLayer, marker, layerInteractedWith, segment, snapLatLng |
| pm:centerplaced | e | Called when the center of a circle is placed/moved. | shape, workingLayer, latlng |
| pm:change | e | Fired coordinates of the layer changed. | layer, latlngs, shape |
For making the snapping to other layers selective, you can add the "snapIgnore" option to your layers to disable the snapping to them during drawing.
//This layer will be ignored by the snapping engine during drawing
L.geoJSON(data, {
snapIgnore: true,
});Edit Mode
You can enable Edit Mode for all layers on a map like this:
// enable global Edit Mode
map.pm.enableGlobalEditMode(options);The following methods are available on map.pm:
| Method | Returns | Description |
|---|---|---|
enableGlobalEditMode(options) | - | Enables global Edit Mode. |
| disableGlobalEditMode() | - | Disables global Edit Mode. |
toggleGlobalEditMode(options) | - | Toggles global Edit Mode. |
| globalEditModeEnabled() | Boolean | Returns true if global Edit Mode is enabled. false when disabled. |
Enable Edit Mode only for one layer:
// enable Edit Mode
layer.pm.enable({
allowSelfIntersection: false,
});The following methods are available for layers under layer.pm:
| Method | Returns | Description |
|---|---|---|
enable(options) | - | Enables Edit Mode. The passed options are preserved, even when the mode is enabled via the Toolbar. options is optional. |
| disable() | - | Disables Edit Mode. |
toggleEdit(options) | - | Toggles Edit Mode. Passed options are preserved. options is optional. |
| enabled() | Boolean | Returns true if Edit Mode is enabled. false when disabled. |
| hasSelfIntersection() | Boolean | Returns true if Line or Polygon has a self intersection. |
| remove() | - | Removes the layer with the same checks as GlobalRemovalMode. |
| getShape() | String | Returns the shape of the layer. |
setOptions(options) | - | Set the options on the layer. |
| getOptions() | Object | Returns the options of the layer. |
See the available options in the table below.
| Option | Default | Description |
|---|---|---|
| snappable | true | Enable snapping to other layers vertices for precision drawing. Can be disabled by holding the ALT key. |
| snapDistance | 20 | The distance to another vertex when a snap should happen. |
| allowSelfIntersection | true | Allow/Disallow self-intersections on Polygons and Polylines. |
| allowSelfIntersectionEdit | false | Allow/Disallow to change vertices they are connected to a intersecting line. Only working if allowSelfIntersection is true and the layer is already self-intersecting while enabling Edit Mode. |
| preventMarkerRemoval | false | Disable the removal of markers/vertexes via right click. |
| removeLayerBelowMinVertexCount | true | If true, vertex removal that cause a layer to fall below their minimum required vertices will remove the entire layer. If false, these vertices can't be removed. Minimum vertices are 2 for Lines and 3 for Polygons. |
| syncLayersOnDrag | false | Defines which layers should dragged with this layer together. true syncs all layers in the same LayerGroup(s) or you pass an Array of layers to sync. |
| allowEditing | true | Edit-Mode for the layer can disabled (pm.enable()). |
| allowRemoval | true | Removing can be disabled for the layer. |
| allowCutting | true | Layer can be prevented from cutting. |
| allowRotation | true | Layer can be prevented from rotation. |
| draggable | true | Dragging can be disabled for the layer. |
| addVertexOn | click | Leaflet layer event to add a vertex to a Line or Polygon, like 'dblclick'. Here's a list. |
| addVertexValidation | undefined | A function for validation if a vertex (of a Line / Polygon) is allowed to add. It passes a object with [layer, marker, event}. For example to check if the layer has a certain property or if the Ctrl key is pressed. |
| removeVertexOn | contextmenu | Leaflet layer event to remove a vertex from a Line or Polygon, like 'dblclick'. Here's a list. |
| removeVertexValidation | undefined | A function for validation if a vertex (of a Line / Polygon) is allowed to remove. It passes a object with [layer, marker, event}. For example to check if the layer has a certain property or if the Ctrl key is pressed. |
| moveVertexValidation | undefined | A function for validation if a vertex / helper-marker is allowed to move / drag. It passes a object with [layer, marker, event}. For example to check if the layer has a certain property or if the Ctrl key is pressed. |
| limitMarkersToCount | -1 | Shows only n markers closest to the cursor. Use -1 for no limit. |
| limitMarkersToZoom | -1 | Shows markers when under the given zoom level. ⭐ |
| limitMarkersToViewport | false | Shows only markers in the viewport. ⭐ |
| limitMarkersToClick | false | Shows markers only after the layer was clicked. ⭐ |
| pinning | false | Pin shared vertices/markers together during edit Details. ⭐ |
| allowPinning | true | Layer can be prevented from pinning.⭐ |
| allowScale | true | Layer can be prevented from scaling.⭐ |
| centerScaling | true | Scale origin is the center, else it is the opposite corner. If false Alt-Key can be used. Scale Mode. ⭐ |
| uniformScaling | true | Width and height are scaled with the same ratio. If false Shift-Key can be used. Scale Mode. ⭐ |
| allowAutoTracing | true | Layer can be prevented from auto tracing.⭐ |
| addVertexOnClick | false | Add Vertices while clicking on the line of Polyline or Polygon⭐ |
You can listen to events related to editing on events like this:
// listen to when a layer is changed in Edit Mode
layer.on('pm:edit', (e) => {
console.log(e);
});The following events are available on a layer instance:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:edit | e | Fired when a layer is edited. | layer, shape |
| pm:update | e | Fired when Edit Mode is disabled and a layer is edited and its coordinates have changed. | layer, shape |
| pm:enable | e | Fired when Edit Mode on a layer is enabled. | layer, shape |
| pm:disable | e | Fired when Edit Mode on a layer is disabled. | layer, shape |
| pm:vertexadded | e | Fired when a vertex is added. | layer, indexPath, latlng, marker, shape |
| pm:vertexremoved | e | Fired when a vertex is removed. | layer, indexPath, marker, shape |
| pm:vertexclick | e | Fired when a vertex is clicked. | layer, indexPath, markerEvent, shape |
| pm:markerdragstart | e | Fired when dragging of a marker which corresponds to a vertex starts. | layer, indexPath, markerEvent, shape |
| pm:markerdrag | e | Fired when dragging a vertex-marker. | layer, indexPath, markerEvent, shape |
| pm:markerdragend | e | Fired when dragging of a vertex-marker ends. | layer, indexPath, markerEvent, shape, intersectionReset |
| pm:layerreset | e | Fired when coords of a layer are reset. E.g. by self-intersection. | layer, indexPath, markerEvent, shape |
| pm:snapdrag | e | Fired during a marker move/drag. Payload includes info about involved layers and snapping calculation. | shape, distance, layer = workingLayer, marker, layerInteractedWith, segment, snapLatLng |
| pm:snap | e | Fired when a vertex-marker is snapped to another vertex. Also fired on the marker itself. | shape, distance, layer = workingLayer, marker, layerInteractedWith, segment, snapLatLng |
| pm:unsnap | e | Fired when a vertex-marker is unsnapped from a vertex. Also fired on the marker itself. | shape, distance, layer = workingLayer, marker, layerInteractedWith, segment, snapLatLng |
| pm:intersect | e | When allowSelfIntersection: false, this event is fired as soon as a self-intersection is detected. | layer, intersection, shape |
| pm:centerplaced | e | Fired when the center of a circle is moved. | layer, latlng, shape |
| pm:change | e | Fired coordinates of the layer changed. | layer, latlngs, shape |
The following events are available on a map instance:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:globaleditmodetoggled | e | Fired when Edit Mode is toggled. | enabled, map |
You can also listen to specific Edit Mode events on the map instance like this:
map.on('pm:globaleditmodetoggled', (e) => {
console.log(e);
});Drag Mode
You can enable Drag Mode for all layers on a map like this:
// enable Drag Mode like this:
map.pm.enableGlobalDragMode();Or you enable dragging for a specific layer:
layer.pm.enableLayerDrag();The following methods are available on layer.pm:
| Method | Returns | Description |
|---|---|---|
| enableLayerDrag() | - | Enables dragging for the layer. |
| disableLayerDrag() | - | Disables dragging for the layer. |
| layerDragEnabled() | Boolean | Returns if Drag Mode is enabled for the layer. |
| dragging() | Boolean | Returns if the layer is currently dragging. |
The following methods are available on map.pm:
| Method | Returns | Description |
|---|---|---|
| enableGlobalDragMode() | - | Enables global Drag Mode. |
| disableGlobalDragMode() | - | Disables global Drag Mode. |
| toggleGlobalDragMode() | - | Toggles global Drag Mode. |
| globalDragModeEnabled() | Boolean | Returns true if global Drag Mode is enabled. false when disabled. |
The following events are available on a layer instance:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:dragstart | e | Fired when a layer starts being dragged. | layer, shape |
| pm:drag | e | Fired when a layer is dragged. | layer, containerPoint,latlng, layerPoint,originalEvent, shape |
| pm:dragend | e | Fired when a layer stops being dragged. | layer, shape |
| pm:dragenable | e | Fired when Drag Mode on a layer is enabled. | layer, shape |
| pm:dragdisable | e | Fired when Drag Mode on a layer is disabled. | layer, shape |
| pm:change | e | Fired coordinates of the layer changed. | layer, latlngs, shape |
The following events are available on a map instance:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:globaldragmodetoggled | e | Fired when Drag Mode is toggled. | enabled, map |
You can also listen to specific Drag Mode events on the map instance like this:
map.on('pm:globaldragmodetoggled', (e) => {
console.log(e);
});Removal Mode
You can enable Removal Mode for all layers on a map like this:
// enable removal mode like this:
map.pm.enableGlobalRemovalMode();The following methods are available on map.pm:
| Method | Returns | Description |
|---|---|---|
| enableGlobalRemovalMode() | - | Enables global removal mode. |
| disableGlobalRemovalMode() | - | Disables global removal mode. |
| toggleGlobalRemovalMode() | - | Toggles global removal mode. |
| globalRemovalModeEnabled() | Boolean | Returns true if global removal mode is enabled. false when disabled. |
The following events are available on a layer instance:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:remove | e | Fired when a layer is removed via Removal Mode | layer, shape |
The following events are available on a map instance:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:globalremovalmodetoggled | e | Fired when Removal Mode is toggled | enabled, map |
| pm:remove | e | Fired when a layer is removed via Removal Mode | layer, shape |
| layerremove | e | Standard Leaflet event. Fired when any layer is removed. | layer |
You can also listen to specific removal mode events on the map instance like this:
map.on('pm:globalremovalmodetoggled', (e) => {
console.log(e);
});Cut Mode
Enables drawing for the shape "Cut" to draw a polygon that gets subtracted from all underlying polygons. This way you can create holes, cut polygons or polylines in half or remove parts of it.
Important: the cutted layer will be replaced, not updated. Listen to the pm:cut event to update your layer references in your code. The pm:cut event will provide you with the original layer and returns the resulting layer(s) that is/are added to the map as a Polygon / MultiPolygon or Polyline / MultiPolyline.
// enable cutting mode
map.pm.enableGlobalCutMode({
allowSelfIntersection: false,
});Available options are the same as in Draw Mode.
If the option layersToCut: [layer1, layer2] is passed, only this certain layers will be cutted.
In the Pro-Version ⭐ is the option allowCircleCut available, which makes it possible to cut Circles.
Over the Global Options you enable cutting in shape form of a Circle cutAsCircle: true for the cut-button. Else you can enable CutCircle over map.pm.enableDraw('CutCircle')
The following methods are available on map.pm:
| Method | Returns | Description |
|---|---|---|
enableGlobalCutMode(options) | - | Enable Cut Mode. |
| disableGlobalCutMode() | - | Disable Cut Mode. |
toggleGlobalCutMode(options) | - | Toggle Cut Mode. |
| globalCutModeEnabled() | Boolean | Returns true if global cut mode is enabled. false when disabled. |
The following events are available on a layer instance:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:cut | e | Fired when the layer being cut. | shape, layer, originalLayer |
| pm:edit | e | Fired when a layer is edited / cut. | layer, shape |
The following events are available on a map instance:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:globalcutmodetoggled | e | Fired when Cut Mode is toggled. | enabled, map |
| pm:cut | e | Fired when any layer is being cut. | shape, layer, originalLayer |
Rotation Mode

The rotation is clockwise. It starts in the North with 0° and goes over East (90°) and South (180°) to West (270°).
The rotation center is the center (layer.getCenter()) of a Polygon with the LatLngs of the layer.
Rotation of Rectangles:
If a rotated rectangle is created programmatically, it is important to set the initial angle with setInitAngle(degrees).
const rect = L.rectangle(coords).addTo(map); // the Leaflet constructor always creates a non-rotated rectangle
rect.setLatLngs(coords); // setting the rotated coordinates
rect.pm.setInitAngle(angle);You can enable Rotate Mode for all layers on a map like this:
map.pm.enableGlobalRotateMode();The following methods are available on map.pm:
| Method | Returns | Description |
|---|---|---|
| enableGlobalRotateMode() | - | Enables global Rotate Mode. |
| disableGlobalRotateMode() | - | Disables global Rotate Mode. |
| toggleGlobalRotateMode() | - | Toggles global Rotate Mode. |
| globalRotateModeEnabled() | Boolean | Returns true if global Rotate Mode is enabled. false when disabled. |
The following methods are available for layers under layer.pm:
| Method | Returns | Description |
|---|---|---|
| enableRotate() | - | Enables Rotate Mode on the layer. |
| disableRotate() | - | Disables Rotate Mode on the layer. |
| rotateEnabled() | Boolean | Returns if Rotate Mode is enabled for the layer. |
rotateLayer(degrees) | - | Rotates the layer by x degrees. |
rotateLayerToAngle(degrees) | - | Rotates the layer to x degrees. |
| getAngle() | Degrees | Returns the angle of the layer in degrees. |
setInitAngle(degrees) | - | Set the initial angle of the layer in degrees. |
The following events are available on a layer instance:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:rotateenable | e | Fired when rotation is enabled for a layer. | layer, helpLayer, shape |
| pm:rotatedisable | e | Fired when rotation is disabled for a layer. | layer, shape |
| pm:rotatestart | e | Fired when rotation starts on a layer. | layer, helpLayer, startAngle, originLatLngs |
| pm:rotate | e | Fired when a layer is rotated. | layer, helpLayer, startAngle, angle, angleDiff, oldLatLngs, newLatLngs |
| pm:rotateend | e | Fired when rotation ends on a layer. | layer, helpLayer, startAngle, angle, originLatLngs, newLatLngs |
| pm:change | e | Fired coordinates of the layer changed. | layer, latlngs, shape |
The following events are available on a map instance:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:globalrotatemodetoggled | e | Fired when Rotate Mode is toggled. | enabled, map |
| pm:rotateenable | e | Fired when rotation is enabled for a layer. | layer, helpLayer, shape |
| pm:rotatedisable | e | Fired when rotation is disabled for a layer. | layer, shape |
| pm:rotatestart | e | Fired when rotation starts on a layer. | layer, helpLayer, startAngle, originLatLngs |
| pm:rotate | e | Fired when a layer is rotated. | layer, helpLayer, startAngle, angle, angleDiff, oldLatLngs, newLatLngs |
| pm:rotateend | e | Fired when rotation ends on a layer. | layer, helpLayer, startAngle, angle, originLatLngs, newLatLngs |
Split Mode ⭐

Enable drawing for the shape "Split" to draw a line that splits all underlying Polygons and Polylines.
Important: the splitted layer will be replaced, not updated. Listen to the pm:split event to update your layer references in your code. The pm:split event will provide you with the original layer and returns the resulting layer(s) that is/are added to the map as a Polygon / MultiPolygon or Polyline / MultiPolyline.
// enable cutting mode
map.pm.enableGlobalSplitMode({
allowSelfIntersection: false,
});Available options are the same as in Draw Mode and in table below:
| Option | Default | Description |
|---|---|---|
| splitOnlyMarkedLayers | false | If it is set to false layers can be excluded with the option splitMark: false. Set it to true to enable splitting only for the layers with the option splitMark: true. |
The following methods are available on map.pm:
| Method | Returns | Description |
|---|---|---|
enableGlobalSplitMode(options) | - | Enable Split Mode. |
| disableGlobalSplitMode() | - | Disable Split Mode. |
toggleGlobalSplitMode(options) | - | Toggle Split Mode. |
| globalSplitModeEnabled() | Boolean | Returns true if global Split Mode is enabled. false when disabled. |
The following events are available on a layer instance:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:split | e | Fired when the layer being split. Returns a LayerGroup containing all resulting layers in layers. | shape, splitLayer, layers, originalLayer |
The following events are available on a map instance:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:globalsplitmodetoggled | e | Fired when Split Mode is toggled. | enabled, map |
| pm:split | e | Fired when any layer is being split. | shape, splitLayer, layers, originalLayer |
Scale Mode ⭐
You can enable Scale Mode for all layers on a map like this:
map.pm.enableGlobalScaleMode();With the option centerScaling the scale origin cen be the center of the layer or the opposite corner of the dragged marker. If false Alt-Key can be used.
The option uniformScaling the scales the width and the height with the same ratio. If false Shift-Key can be used.
The following methods are available on map.pm:
| Method | Returns | Description |
|---|---|---|
| enableGlobalScaleMode() | - | Enables global Scale Mode. |
| disableGlobalScaleMode() | - | Disables global Scale Mode. |
| toggleGlobalScaleMode() | - | Toggles global Scale Mode. |
| globalScaleModeEnabled() | Boolean | Returns true if global Scale Mode is enabled. false when disabled. |
The following methods are available for layers under layer.pm:
| Method | Returns | Description |
|---|---|---|
| enableScale() | - | Enables Scale Mode on the layer. |
| disableScale() | - | Disables Scale Mode on the layer. |
| scaleEnabled() | Boolean | Returns if Scale Mode is enabled for the layer. |
scaleLayer(percent) | - | Scale the layer by x percent. Also an Object with {w: width, h: height} can be passed. Scale up > 0 , scale down < 0. |
The following events are available on a layer instance:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:scaleenable | e | Fired when scale is enabled for a layer. | layer, helpLayer |
| pm:scaledisable | e | Fired when scale is disabled for a layer. | layer |
| pm:scalestart | e | Fired when scale starts on a layer. | layer, helpLayer, originLatLngs, originLatLngs |
| pm:scale | e | Fired when a layer is scaled. | layer, helpLayer, oldLatLngs, newLatLngs |
| pm:scaleend | e | Fired when scale ends on a layer. | layer, helpLayer, originLatLngs, newLatLngs |
The following events are available on a map instance:
| Event | Params | Description | Output |
|---|---|---|---|
| pm:globalscalemodetoggled | e | Fired when Scale Mode is toggled. | enabled, map |
| pm:scaleenable | e | Fired when scale is enabled for a layer. | layer, helpLayer |
| pm:scaledisable | e | Fired when scale is disabled for a layer. | layer |
| pm:scalestart | e | Fired when scale starts on a layer. | layer, helpLayer, originLatLngs, originLatLngs |
| pm:scale | e | Fired when a layer is scaled. | layer, helpLayer, oldLatLngs, newLatLngs |
| pm:scaleend | e | Fired when scale ends on a |
3 years ago