logo
leafmap
Draw features
Initializing search
    GitHub
    GitHub
    • Home
    • Book
    • Installation
    • Get Started
    • Usage
    • Web App
    • Tutorials
    • Contributing
    • FAQ
    • Changelog
    • YouTube Channel
    • Report Issues
      • basemaps module
      • bokehmap module
      • colormaps module
      • common module
      • deck module
      • deckgl module
      • download module
      • examples module
      • foliumap module
      • kepler module
      • maplibregl module
      • leafmap module
      • legends module
      • map_widgets module
      • osm module
      • pc module
      • plot module
      • plotlymap module
      • deck module
      • stac module
      • toolbar module
      • FOSS4G 2021
      • SIGSPATIAL 2021
      • YouthMappers 2021
      • ICRW 2023
      • EarthCube 2023
      • Taiwan 2024
      • HGAC 2024
      • Overview
      • 3d buildings
      • 3d choropleth
      • 3d indoor mapping
      • 3d pmtiles
      • 3d style
      • 3d terrain
      • Add 3d buildings
      • Add a marker
      • Add colorbar
      • Add components
      • Add deckgl layer
      • Add gif
      • Add html
      • Add icon
      • Add image
      • Add image generated
      • Add labels
      • Add legend
      • Add logo
      • Add text
      • Animate a line
      • Animate camera around point
      • Animate images
      • Animate point along line
      • Animate point along route
      • Attribution position
      • Basemaps
      • Center on symbol
      • Change building color
      • Change case of labels
      • Choropleth
      • Cloud optimized geotiff
      • Cluster
      • Color switcher
      • Countries filter
      • Create vector
      • Custom marker
      • Data driven lines
      • Disable scroll zoom
      • Display rich text
      • Drag a marker
      • Draw features
      • Edit vector
      • Fallback image
      • Fields of the world
      • Fit bounds
      • Fill pattern
      • Fly to
      • Fly to options
      • Fullscreen
      • Geojson layer in stack
      • Geojson line
      • Geojson points
      • Geojson polygon
      • Geopandas
      • Globe control
      • Google earth engine
      • Gps trace
      • Heatmap layer
      • Housing prices
      • Interactive false
      • Jump to
      • Language switch
      • Layer control
      • Layer manager
      • Layer styling
      • Line gradient
      • Live geojson
      • Live update feature
      • Local geojson
      • Local raster
      • Locate user
      • Map tiles
      • Mapillary
      • Maptiler styles
      • MGRS
      • Mouse position
      • Multiple geometries
      • Nasa opera
      • Navigation
      • Ocean bathymetry
      • Openfreemap
      • Openstreetmap
      • Overture
      • Pmtiles
      • Restrict bounds
      • Satellite map
      • Search control
      • Set pitch bearing
      • Sidebar
      • Stac
      • To html
      • Variable label placement
      • Variable offset label placement
      • Vector tile
      • Video on a map
      • Visualize population density
      • Wms source
      • Zoom to linestring
      • Usage
      • 01 leafmap intro
      • 02 using basemaps
      • 03 cog stac
      • 04 cog mosaic
      • 05 load raster
      • 06 legend
      • 07 colorbar
      • 08 whitebox
      • 09 csv to points
      • 10 add vector
      • 11 linked maps
      • 12 split map
      • 13 geopandas
      • 14 postgis
      • 15 openstreetmap
      • 16 heremap
      • 17 vector tile layer
      • 18 point layer
      • 19 map to html
      • 20 planet imagery
      • 21 ts inspector
      • 22 time slider
      • 23 colormaps
      • 24 heatmap
      • 25 map title
      • 26 kepler gl
      • 27 basemap gallery
      • 28 publish map
      • 29 pydeck
      • 30 census data
      • 31 search basemaps
      • 32 local tile
      • 33 image overlay
      • 34 add points from xy
      • 35 circle markers
      • 36 add labels
      • 37 planetary computer
      • 38 plotly
      • 39 inspector tool
      • 40 plotly gui
      • 41 raster gui
      • 42 create cog
      • 43 search control
      • 44 attribute table
      • 45 create vector
      • 46 edit vector
      • 47 numpy to cog
      • 48 lidar
      • 49 split control
      • 50 marker cluster
      • 51 clip image
      • 52 netcdf
      • 53 choropleth
      • 54 plot raster
      • 55 lidar
      • 56 download ned
      • 57 national map
      • 58 bokeh
      • 59 create legend
      • 60 add widget
      • 61 vector to gif
      • 62 folium colorbar
      • 63 arcgis
      • 64 stac search
      • 65 sagemaker
      • 66 gradio
      • 67 maxar open data
      • 68 openaerialmap
      • 69 turkey earthquake
      • 70 zonal stats
      • 71 aws s3
      • 72 timelapse
      • 73 custom stac
      • 74 map tiles to geotiff
      • 75 segment anything
      • 76 image comparison
      • 77 split raster
      • 78 read raster
      • 79 timeseries
      • 80 solar
      • 81 buildings
      • 82 pmtiles
      • 83 vector viz
      • 84 read parquet
      • 85 gedi
      • 86 add markers
      • 87 actinia
      • 88 nasa earth data
      • 89 image array viz
      • 90 pixel inspector
      • 91 raster viz gui
      • 92 maplibre
      • 93 maplibre pmtiles
      • 94 mapbox
      • 95 edit vector
      • 96 batch edit vector
      • 97 overture data
      • 98 watershed
      • 99 wetlands
      • 100 nlcd
      • 101 nasa opera
      • 102 fused
      • 103 raster colormap
      • 104 point style
      • 105 vector time slider

    image image image

    Draw features on the map

    This notebook shows how to draw features on the map using the mapbox-gl-draw plugin.

    Uncomment the following line to install leafmap if needed.

    In [1]:
    Copied!
    # %pip install "leafmap[maplibre]"
    
    # %pip install "leafmap[maplibre]"
    In [2]:
    Copied!
    import os
    import leafmap.maplibregl as leafmap
    
    import os import leafmap.maplibregl as leafmap

    Add the default draw control.

    In [3]:
    Copied!
    m = leafmap.Map(center=[-100, 40], zoom=3, style="positron")
    m.add_draw_control(position="top-left")
    m
    
    m = leafmap.Map(center=[-100, 40], zoom=3, style="positron") m.add_draw_control(position="top-left") m

    Only activate a give set of control.

    In [4]:
    Copied!
    from maplibre.plugins import MapboxDrawControls, MapboxDrawOptions
    
    from maplibre.plugins import MapboxDrawControls, MapboxDrawOptions
    In [5]:
    Copied!
    m = leafmap.Map(center=[-100, 40], zoom=3, style="positron")
    draw_options = MapboxDrawOptions(
        display_controls_default=False,
        controls=MapboxDrawControls(polygon=True, line_string=True, point=True, trash=True),
    )
    m.add_draw_control(draw_options)
    m
    
    m = leafmap.Map(center=[-100, 40], zoom=3, style="positron") draw_options = MapboxDrawOptions( display_controls_default=False, controls=MapboxDrawControls(polygon=True, line_string=True, point=True, trash=True), ) m.add_draw_control(draw_options) m

    Load a GeoJSON FeatureCollection to the draw control.

    In [6]:
    Copied!
    m = leafmap.Map(center=[-100, 40], zoom=3, style="positron")
    geojson = {
        "type": "FeatureCollection",
        "features": [
            {
                "id": "abc",
                "type": "Feature",
                "properties": {},
                "geometry": {
                    "coordinates": [
                        [
                            [-119.08, 45.95],
                            [-119.79, 42.08],
                            [-107.28, 41.43],
                            [-108.15, 46.44],
                            [-119.08, 45.95],
                        ]
                    ],
                    "type": "Polygon",
                },
            },
            {
                "id": "xyz",
                "type": "Feature",
                "properties": {},
                "geometry": {
                    "coordinates": [
                        [
                            [-103.87, 38.08],
                            [-108.54, 36.44],
                            [-106.25, 33.00],
                            [-99.91, 31.79],
                            [-96.82, 35.48],
                            [-98.80, 37.77],
                            [-103.87, 38.08],
                        ]
                    ],
                    "type": "Polygon",
                },
            },
        ],
    }
    m.add_draw_control(position="top-left", geojson=geojson)
    m
    
    m = leafmap.Map(center=[-100, 40], zoom=3, style="positron") geojson = { "type": "FeatureCollection", "features": [ { "id": "abc", "type": "Feature", "properties": {}, "geometry": { "coordinates": [ [ [-119.08, 45.95], [-119.79, 42.08], [-107.28, 41.43], [-108.15, 46.44], [-119.08, 45.95], ] ], "type": "Polygon", }, }, { "id": "xyz", "type": "Feature", "properties": {}, "geometry": { "coordinates": [ [ [-103.87, 38.08], [-108.54, 36.44], [-106.25, 33.00], [-99.91, 31.79], [-96.82, 35.48], [-98.80, 37.77], [-103.87, 38.08], ] ], "type": "Polygon", }, }, ], } m.add_draw_control(position="top-left", geojson=geojson) m

    Retrieve the draw features.

    In [7]:
    Copied!
    m.draw_features_selected
    
    m.draw_features_selected
    Out[7]:
    []
    In [8]:
    Copied!
    m.draw_feature_collection_all
    
    m.draw_feature_collection_all
    Out[8]:
    {}

    2024-06-26 2024-06-26
    Copyright © 2021 - 2024 Qiusheng Wu
    Made with Material for MkDocs