Research
Security News
Malicious PyPI Package ‘pycord-self’ Targets Discord Developers with Token Theft and Backdoor Exploit
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
@mapbox/mapbox-gl-draw
Advanced tools
@mapbox/mapbox-gl-draw is a plugin for Mapbox GL JS that adds support for drawing and editing features on a map. It allows users to draw points, lines, and polygons, and provides a user-friendly interface for manipulating these shapes.
Drawing Points
This feature allows users to draw points on the map. The code initializes the MapboxDraw control and adds it to the map. When a point is created, an event is triggered, and the created point's features are logged to the console.
const draw = new MapboxDraw();
map.addControl(draw);
map.on('draw.create', function(e) {
const features = e.features;
console.log('Point created:', features);
});
Drawing Lines
This feature allows users to draw lines on the map. Similar to drawing points, the MapboxDraw control is added to the map, and an event is triggered when a line is created, logging the line's features to the console.
const draw = new MapboxDraw();
map.addControl(draw);
map.on('draw.create', function(e) {
const features = e.features;
console.log('Line created:', features);
});
Drawing Polygons
This feature allows users to draw polygons on the map. The MapboxDraw control is added to the map, and an event is triggered when a polygon is created, logging the polygon's features to the console.
const draw = new MapboxDraw();
map.addControl(draw);
map.on('draw.create', function(e) {
const features = e.features;
console.log('Polygon created:', features);
});
Editing Features
This feature allows users to edit existing features on the map. The MapboxDraw control is added to the map, and an event is triggered when a feature is updated, logging the updated feature's details to the console.
const draw = new MapboxDraw();
map.addControl(draw);
map.on('draw.update', function(e) {
const features = e.features;
console.log('Feature updated:', features);
});
Deleting Features
This feature allows users to delete features from the map. The MapboxDraw control is added to the map, and an event is triggered when a feature is deleted, logging the deleted feature's details to the console.
const draw = new MapboxDraw();
map.addControl(draw);
map.on('draw.delete', function(e) {
const features = e.features;
console.log('Feature deleted:', features);
});
leaflet-draw is a plugin for the Leaflet library that provides similar drawing and editing functionalities for maps. It allows users to draw points, lines, and polygons, and offers a user-friendly interface for manipulating these shapes. Compared to @mapbox/mapbox-gl-draw, leaflet-draw is designed specifically for the Leaflet ecosystem.
Turf is a JavaScript library for spatial analysis that includes some drawing and editing functionalities. It allows users to create and manipulate geometries, perform spatial operations, and analyze geospatial data. While Turf is more focused on spatial analysis, it can be used in conjunction with other libraries to provide drawing capabilities similar to @mapbox/mapbox-gl-draw.
Adds support for drawing and editing features on mapbox-gl.js maps. See a live example here
Requires mapbox-gl-js.
If you are developing with mapbox-gl-draw
, see API.md for documentation.
npm install @mapbox/mapbox-gl-draw
Draw ships with CSS, make sure you include it in your build.
When using modules
import mapboxgl from 'mapbox-gl';
import MapboxDraw from "@mapbox/mapbox-gl-draw";
When using a CDN
<script src='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-draw/v1.4.3/mapbox-gl-draw.js'></script>
When using modules
import '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css'
When using CDN
<link rel='stylesheet' href='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-draw/v1.4.3/mapbox-gl-draw.css' type='text/css' />
Typescript definition files are available as part of the DefinitelyTyped package.
npm install @types/mapbox__mapbox-gl-draw
mapboxgl.accessToken = 'YOUR_ACCESS_TOKEN';
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v12',
center: [40, -74.50],
zoom: 9
});
var Draw = new MapboxDraw();
// Map#addControl takes an optional second argument to set the position of the control.
// If no position is specified the control defaults to `top-right`. See the docs
// for more details: https://docs.mapbox.com/mapbox-gl-js/api/#map#addcontrol
map.addControl(Draw, 'top-left');
map.on('load', function() {
// ALL YOUR APPLICATION CODE
});
https://www.mapbox.com/mapbox-gl-js/example/mapbox-gl-draw/
For additional functionality check out our list of custom modes.
Mapbox Draw accepts functionality changes after the functionality has been proven out via a custom mode. This lets users experiment and validate their mode before entering a review process, hopefully promoting innovation. When you write a custom mode, please open a PR adding it to our list of custom modes.
Install dependencies, build the source files and crank up a server via:
git clone git@github.com:mapbox/mapbox-gl-draw.git
npm ci
npm start & open "http://localhost:9967/debug/?access_token=<token>"
npm run test
To GitHub and NPM:
npm version (major|minor|patch)
git push --tags
git push
npm publish
To CDN:
# make sure you are authenticated for AWS
git checkout v{x.y.z}
npm ci
npm run prepublish
aws s3 cp --recursive --acl public-read dist s3://mapbox-gl-js/plugins/mapbox-gl-draw/v{x.y.z}
Update the version number in the GL JS example.
We're trying to follow standards when naming things. Here is a collection of links where we look for inspiration.
1.5.0
suppressAPIEvents
option to control event emission from API methods by @stepankuzmin in https://github.com/mapbox/mapbox-gl-draw/pull/1264map.fire
monkey patch by @stepankuzmin in https://github.com/mapbox/mapbox-gl-draw/pull/1243properties.mode
in vertex
and midpoint
by @varna in https://github.com/mapbox/mapbox-gl-draw/pull/1221featureChanged
trigger on feature properties updates by @petermoz in https://github.com/mapbox/mapbox-gl-draw/pull/1201package.json
by @varna in https://github.com/mapbox/mapbox-gl-draw/pull/1275geojson-flatten
dependency by @stevage in https://github.com/mapbox/mapbox-gl-draw/pull/1066hat
with nanoid
for generating GeoJSON feature IDs by @underoot (h/t @varna for help) in https://github.com/mapbox/mapbox-gl-draw/pull/1318FAQs
A drawing component for Mapbox GL JS
The npm package @mapbox/mapbox-gl-draw receives a total of 186,138 weekly downloads. As such, @mapbox/mapbox-gl-draw popularity was classified as popular.
We found that @mapbox/mapbox-gl-draw demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 28 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.
Security News
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.