一个可以自定义UI的地图编辑组件react-leaflet-editable

2,137 阅读2分钟

react-leaflet-editable

这是一个轻量的react组件,基于 react-leafletleaflet-editable. 它仅仅提供了一些地图编辑的api,你可以随意的更改你的UI.

Example

瞧一瞧 DEMO

How to use

Install

npm install react-leaflet-editable -S

Introducing dependency and import component

Note:

  • 在 import react-leaflet-editable之前先 安装 react-leaflet and leaflet-eidtable
  • Map组件<Map /> 必须包含 ref and editable = true 属性
  • ReactLeafletEditable 的children属性可以任意嵌套,也可以有多个Map组件,不过只会第一个Map组件起作用,其他的会正常显示
import React, { Component, createRef } from 'react'
import L, { Icon } from 'leaflet'
import 'leaflet-editable'
import ReactLeafletEditable from 'react-leaflet-editable';
import { Map, TileLayer } from 'react-leaflet'
import 'leaflet/dist/leaflet.css'

class Demo extends Component {
    constructor(){
        super()
        this.editRef = createRef();
        this.mapRef = createRef();
    }
    // 编辑一个多边形
    editPolygon = () => {
        this.editRef.current.startPolygon()
    }
    render(){
        return(
             <ReactLeafletEditable
                ref={this.mapRef}
             >
                <Map
                    ref={this.mapRef}
                    editable={true}
                    zoom={4}
                    maxZoom={18}
                    center={[35, 105]}>
                    <button
                        onClick={this.editPolygon}
                        className="editable-btn"
                    >polygon</button>
                    <TileLayer url="xxx" />
                </Map>
            </ReactLeafletEditable>
        )
    }
}

Component API

Props

name type description params
onEditing function hook to leaflet-editable editable:editing (e,map)
onEnable function hook to leaflet-editable editable:enable (e,map)
onDisable function hook to leaflet-editable editable:disable (e,map)
onStartDrawing function hook to leaflet-editable editable:drawing:start (e,map)
onDrawingClick function hook to leaflet-editable editable:drawing:click (e,map)
onDrawingCommit function hook to leaflet-editable editable:drawing:commit (e,map)
onDrawingMouseDown function hook to leaflet-editable editable:drawing:mousedown (e,map)
onDrawingMouseUp function hook to leaflet-editable editable:drawing:mouseup (e,map)
onDrawingMove function hook to leaflet-editable editable:drawing:move (e,map)
onCancelDrawing function hook to leaflet-editable editable:drawing:cancel (e,map)
onEndDrawing function hook to leaflet-editable editable:drawing:end (e,map)
onDragStart function hook to leaflet-editable editable:dragstart (e,map)
onDrag function hook to leaflet-editable editable:drag (e,map)
onDragEnd function hook to leaflet-editable editable:dragend (e,map)
onVertexMarkerDrag function hook to leaflet-editable editable:vertex:drag (e,map)
onVertexMarkerDragStart function hook to leaflet-editable editable:vertex:dragstart (e,map)
onVertexMarkerDragEnd function hook to leaflet-editable editable:vertex:dragend (e,map)
onVertextCtrlClick function hook to leaflet-editable editable:vertex:ctrlclick (e,map)
onNewVertex function hook to leaflet-editable editable:vertex:new (e,map)
onVertexMarkerClick function hook to leaflet-editable editable:vertex:click (e,map)
onVertexRawMarkerClick function hook to leaflet-editable editable:vertex:rawclick (e,map)
onVertexDeleted function hook to leaflet-editable editable:vertex:deleted (e,map)
onVertexMarkerCtrlClick function hook to leaflet-editable editable:vertex:ctrlclick (e,map)
onVertexMarkerShiftClick function hook to leaflet-editable editable:vertex:shiftclick (e,map)
onVertexMarkerMetaKeyClick function hook to leaflet-editable editable:vertex:metakeyclick (e,map)
onVertexMarkerAltClick function hook to leaflet-editable editable:vertex:altclick (e,map)
onVertexMarkerContextMenu function hook to leaflet-editable editable:vertex:contextmenu (e,map)
onVertexMarkerMouseDown function hook to leaflet-editable editable:vertex:mousedown (e,map)
onVertexMarkerMouseOver function hook to leaflet-editable editable:vertex:mouseover (e,map)
onVertexMarkerMouseOut function hook to leaflet-editable editable:vertex:mouseout (e,map)
onMiddleMarkerMouseDown function hook to leaflet-editable editable:middlemarker:mousedown (e,map)
onShapeNew function hook to leaflet-editable editable:shape:new (e,map)
onShapeDelete function hook to leaflet-editable editable:shape:delete (e,map)
onShapeDeleted function hook to leaflet-editable editable:shape:deleted (e,map)

Methods

name type description params
startPolygon function start edit a polygon layer
startPolyline function start edit a polyline layer
startMarker function start edit a marker layer
startRectangle function start edit a rect layer
startCircle function start edit a circle layer
startHole function start edit a hole layer (editor,latlng)
clearAll function clear all editing layers