Leaflet-Geoman 帮助文档

Leaflet-Geoman 使用文档

安装

迁移 Leaflet.PM

npm uninstall leaflet.pm
npm i @geoman-io/leaflet-geoman-free

通过npm安装

npm i @geoman-io/leaflet-geoman-free

手动安装

下载leaflet-geoman.css 和leaflet-geoman.min.js ,然后把它们包含在工程中。

通过CDN安装

CSS

<link rel="stylesheet" href="https://unpkg.com/@geoman-io/leaflet-geoman-free@latest/dist/leaflet-geoman.css" />

JS

<script src="https://unpkg.com/@geoman-io/leaflet-geoman-free@latest/dist/leaflet-geoman.min.js"></script>

作为ES6模块

import '@geoman-io/leaflet-geoman-free';
import '@geoman-io/leaflet-geoman-free/dist/leaflet-geoman.css';

快速开始

初始化 leaflet-geoman

在引入leaflet之后,仅引入leaflet-geoman.min.js.它会自己初始化。如果你需要leaflet-geoman忽略一些确定的图层,在创建的时候,通过 pmIgnore:true 选型控制忽略的图层。示例:

L.marker([51.50915,-0.096112],{pmIgnore:true}).addTo(map);

选择加入

如果你想使用leaflet作为一个可选项,在导入leaflet之后立即调用以下函数:

L.PM.initialize([optIn:true]);

此时所有的他得都会被leaflet-geoman忽略,除非你特别声明pmIgnore:false到一个图层。

L.marker([51.50915,-0.096112],{pmIgnore:false}).addTo(map);

leaflet-geoman 工具条

你可以通过一个接口把工具条添加到地图。

map.pm.addControls({
    position:'topleft',
    drawCircle:false,
});

下表提供了可选选项.

选项默认值描述
position‘topleft’工具条位置,可能值有'topleft','topright', 'bottomleft', 'bottomright'draw
drawMarkertrue添加一个绘制marker点按钮
drawCircleMarkertrue添加一个绘制圆型marker点按钮
drawPolylinetrue添加一个绘制线段按钮
drawRectangletrue添加一个绘制矩形按钮
drawPolygontrue添加一个绘制多边形按钮
drawCircletrue添加一个绘制圆按钮
editModetrue添加一个切换编辑模式(所有图层)
dragModetrue添加一个切换移动模式(所有图层)
cutPolygontrue添加一个切割图形按钮
removalModetrue添加一个移除图层按钮
pinningOptiontrue添加一个切换钉点选项按钮
snapingOptiontrue添加一个切换捕捉选项按钮

如果你想知道示例是怎样的,drawPolygon 按钮将会可用通过定义选项。

示例:

//make markers not snapable during marker draw
map.pm.setGlobalOptions({snapable:false});

所有选项都可以在绘制模式中指定。

绘制模式

在地图上使用绘制模式如下:

//enable polygon drawing mode
map.pm.enableDraw('Polygon',{
	snappable:true,
	sanpDistance:20,
})

//disable drawing mode
map.pm.disableDraw('Polygon');

当前可用图形包括:点(Marker),圆(Circle),线(Line),矩形(Rectangle),多边形(Polygon)h和切割(Cut)。

你可以通过下面代码获取任何图形:

map.pm.Draw.getShapes();

以下是可选选项列表:

选项默认值描述
snappabletrue精确绘制时可捕捉其他图层节点。按住ALT 键可以关闭捕捉功能。
snapDistance20捕获到其他节点的距离。
snapMiddlefalse允许捕捉图形两个节点中间部分。
tooltipstrue为用户显示有用的提按钮提示。
allowSelfIntersectiontrue允许图形自相交。
templineStyle{color:‘red’}leaflet环图层选项,两个节点之间。
hintlineStyle{color:‘red’,dashArray:[5,5]}leaflet环图层选项,最后一个节点到当前鼠标点之间线段。
cursorMakertrue当前鼠标位置显示成一个marker点。
finishOnnullleaflet 结束绘制图形的图层事件,像’dblClick‘。Here’s a list.
markerStyle{draggable:true}leaflet Marker点选项,只在绘制Marker点时有效。

在绘制过程中,你可以监听地图事件。

map.on('pm:drawstart',e=>{
	console.log(e);
});

以下是可以监听的地图事件列表:

事件参数描述
pm:drawstarte当绘制模式启用的时候调用。参数包含图形类型和工作图层。
pm:drawende当绘制模式关闭的时候调用,参数包含图形类型。
pm:createe当一个图形被绘制完毕后调用,参数包含图形类型和工作图层。

还有一些事件可以在图层绘制中监听,注册一个事件参考:

// listen to vertexes being added to currently drawn layer(called workingLayer)
map.on('pm:drawstart',({workingLayer})=>{
	workingLayer.on('pm:vertexadded',e={
		console.log(e);
	});
});

这里有可以监听的图层事件列表:

事件参数描述
pm:vertexaddede当一个节点被添加的时候调用,参数包含新的节点,它的marker,索引,工作图层和图形类型。
pm:snapdrage在移动一个点中调用,参数包含影响图层和捕捉计算。
pm:snape当一个节点被捕捉后调用,参数同上。
pm:unsnape当一个节点失去捕捉后调用,参数同上。
pm:centerplacede当图形的中心点被替换或移动后调用。

为了有选择性捕捉图层,你可以添加"snapIgnore"选项到你的图层,去关闭在绘制工程中的捕捉。

//This layer will be ignored by the sanpping engine during drawing
L.geoJSON(data,{
	snapIngore:true
});

编辑模式

使用以下代码去编辑图层的节点。

//enable edit mode
layer.pm.enable({
	allowSelfIntersection:false,
})

查询可选选项列表:

选项默认值描述
snappabletrue精确绘制时开启捕捉其他图层节点,按住ALT建可关闭捕捉。
snapDistance20捕捉距离。
pinningfalse在编辑模式下,切换用钉点标识节点或marker点。
allowSelfIntersectiontrue允许多变线或线段可以自相交。
preventMarkerRemovalfalse阻止通过鼠标右键移除marker点或节点。
limitMarkersToCount-1显示靠近当前鼠标点n个marker点。-1表示没有限制。
limitMarkersToZoom-1在给定的显示级别下显示marker点。
limitMarkerToViewportfalse在视图内只显示marker点。
limitMarkerToClickfalse图层被点击后才显示marker点。

在layer.pm 下图层的可用方法:

方法返回值描述
eable(options)-开启编辑模式。通过的选项将会保存,即使编辑模式是通过工具条启动。
disable()-关闭编辑模式。
toggleEdit(options)-切换编辑模式。通过选项保存。
enabledBoolean返回true,当处编辑模式开启状态。
hasSelfIntersectionBoolean返回true,当图层中有自相交。

你可以监听编辑相关事件参考下面代码:

//layer.on('pm:edit',e=>{
	console.log(e);
})

图层示例的可用事件:

事件参数描述
pm:edite当图层被编辑的时候触发。
pm:updatee当图层被编辑且坐标发生了变化触发。
pm:disablee当图层的编辑模式关闭的时候触发。
pm:vertexaddede当添加了节点后触发
pm:vetexremovede当移除了节点后触发
pm:markerdragstarte当marker点开始移动时触发
pm:markerdragende当marker点结束移动时触发
pm:snape当一个节点被其他节点捕捉的时候触发
pm:unsnape当一个节点未被其他节点捕捉的时候触发
pm:intersecte当allowSelfIntersection:false,当检测到自相交的时候立即触发。
pm:centerplacede当图形的中心点移动的时候触发。

你也可以在地图实例上监听指定的编辑模式事件:

map.on('pm:globaleditmodetoggled',e=>{
	console.log(e);
})

这个事件是一个启动布尔值和地图映射的对象。

拖拽模式

//toggle drag mode like this:
map.pm.toggleGlobalDragMode();

以下是map.pm的可以方法:

方法返回描述
toggleGloablDragMode()-Toggles global drag mode.
globalDragModeEnabled()Boolean如果拖拽模式开启,则返回true。拖拽模式关闭,则返回false.

以下是图层实例可用的事件

事件参数描述
pm:dragstarte当图层开始拖拽的时候触发。
pm:drage当图层已经拖拽完毕后触发。
pm:dragende当图层停止正在拖拽的时候触发。

你也可以在地图实例上监听指定的拖拽模式事件。

map.on('pm:globaldragmodetoggled',e=>{
	console.log(e);
})

这个事件有启动的布尔对象及地图映射对象。

移除模式

//toggle drag mode like this:
map.pm.toggleGlobalRemovalMode();

以下是map.pm可用方法列表:

方法返回值描述
toggleGlobalRemovalMode()-切换全局移除模式。
globalRemovalEnabled()Boolean如果全局移除模式开启,则返回true,移除模式关闭,返回false。

以下事件也可以在地图实例上监听:

事件参数描述
pm:removee当图层通过移除模式被移除的时候触发。
layer:removee标准Leaflet事件,当任何图层被移除的时候触发。

你可以像这样去监听指定的移除模式事件作用在地图实例上。

map.on('pm:globalremovalmodetoggled',e=>{
	console.log(e);
})

这个事件有启动的布尔对象及地图映射对象。

剪切模式

开启剪切图形功能,会从所有的叠加图形中减去绘制的多边形。这中方法可以创建含洞图形,分割图形或移除部分图形。

注意:被剪切的图形将会被替换,不是更新。监听pm:cut事件会更新你代码中引用的图层。pm:cut事件会提供原始图形和返回结果图层(被添加到图层的多边形或多面)。

//enable cutting mode
map.pm.Draw.Cut.enable({
	allowSelfIntersection:false,
})

可使用选项和绘制模式一样。

你可以使用下面方法在map.pm.Draw.Cut去处理剪切模式。

方法返回描述
enable(options)-开启剪切模式
disable()-关闭剪切模式
toggle(options)-切换剪切模式

下面是图层实例上的可用事件。

事件参数描述
pm:cute当图层被切割的时候触发。

下面是地图实例上可用的事件。

事件参数描述
pm:cute当图层被切割的时候触发。

选项

当在绘制和编辑图层的时候你有一些选项可用。你可以在每个图层上设置这些选(如上所述),或者你可以设置为全局所有图层都有效。当你使用工具条的时候不能通过代码来改变这些选项,这时使用全局设置选项就显得非常有用。

示例:

layer.pm.enable({pinning:true,snapable:false})
map.pm.setGlobalOptions({pinning:true,limitMarkersToCount:15})

以下是全局编辑模式可使用选项

选项默认值描述
snapabletrue开启捕捉
snapDistance20捕捉距离
pinningfalse标记节点
allowSelfIntersectiontrue允许自相交
preventMarkerRemovalfalse关闭移除节点功能
limitMarkersToCount-1鼠标周边显示marker点数
limitMarkersCountGloballyfalse激活limitMarkersToCount
limitMarkersToZoom-1设置在某个比例尺下显示marker点
limitMarkersToViewportfalse只在视图内显示marker点
limitMarkersToClickfalse图层被点击的时候只显示marker点

捕捉

钉点

通用

语言

改变面向用户leaflet-geoman的语言

map.pm.setLang('zh');
样式

为了改变绘制过程中线的符号,你可以输入以下选项到enableDraw()方法中。

//optional options for line style during draw. These are the defaults
var options={
	//the lines betwwen coordinates/markers
	templineStyle:{
		color:'red',
	},
	//the line form the last marker to the mouse cursor
	hintlineStyle:{
		color:'red',
		dashArray:[5,5],
	},
};

//enable drawing mode for shapes -eg Poly Line Circle 
map.pm.enableDraw('Polygon',options);

定制leaflet 绘制图层样式:

//optional options for line style
var options={
	templineStyle:{},
	hintlineStyle:{},
	pathOptions:{
		//add leaflet options for polylines/Polygons
		color:'red',
		fillcolor:'green',
	},
};

//enable drawing mode for shape 
map.pm.enableDraw('Polygon',options);

或可以像通常一样设置

map.pm.setPathOptons({
	color:'orange',
	fillColor:'green',
	fillOpacity:0.4,
});

原文地址

  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值