vue+leaflet-Geoman的例子
<template
>
<div
class="contant">
<button
class="draw" @click
="draw()">绘制
</button
>
<button
class="disDraw" @click
="disDraw()">关闭绘制
</button
>
<button
class="editor" @click
="editor()">全体编辑
</button
>
<button
class="diseditor" @click
="diseditor()">全体禁止编辑
</button
>
<button
class="toggle" @click
="toggle()">切换编辑
</button
>
<button
class="move" @click
="move()">启用拖拽
</button
>
<button
class="remove" @click
="remove()">启用移除
</button
>
<button
class="cut" @click
="cut()">启用切割
</button
>
<div id
="map"></div
>
</div
>
</template
>
<script type
="text/javascript">
export default {
name
: "Opentomap",
data() {
return {
activeKey
: 0,
map
: null,
};
},
mounted() {
this.map
= this.$
L.map("map").setView(["30.52771", " 114.35232"], 16);
this.$
L
.tileLayer("https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png")
.addTo(this.map
);
this.map
.pm
.addControls({
position
: "topleft",
drawPolygon
: true,
drawMarker
: true,
drawCircleMarker
: true,
drawPolyline
: true,
drawRectangle
: true,
drawCircle
: true,
editMode
: true,
dragMode
: true,
cutPolygon
: true,
removalMode
: true,
});
this.map
.pm
.setPathOptions({
color
: "blue",
fillColor
: "pink",
fillOpacity
: 0.4,
});
this.map
.pm
.setLang("zh");
this.$bus
.$emit("getbus2", "英国地图");
},
components
: {},
methods
: {
draw() {
this.map
.pm
.enableDraw("Rectangle", { snappable
: false });
this.map
.on("pm:drawstart", (e
) => {
console
.log(e
, "first");
});
this.map
.on("pm:create", (e
) => {
console
.log(e
, "绘制完成时调用");
alert(e
.layer
._latlngs
[0]);
});
},
disDraw() {
this.map
.pm
.disableDraw("");
},
editor() {
this.map
.pm
.toggleGlobalEditMode();
},
diseditor() {
this.map
.pm
.disableGlobalEditMode();
},
toggle() {
this.map
.pm
.toggleGlobalEditMode();
},
move() {
this.map
.pm
.toggleGlobalDragMode();
},
remove() {
this.map
.pm
.toggleGlobalRemovalMode();
this.map
.on("pm:remove", (e
) => {
console
.log(e
, "移除");
});
},
cut() {
this.map
.pm
.Draw
.Cut
.enable({
allowSelfIntersection
: false,
});
this.map
.on("pm:cut", () => {
console
.log("切割");
});
},
},
};
</script
>
<style scoped
>
#map
{
width
: 100%;
height
: 100%;
float
: right
;
z
-index
: 1;
}
.draw
{
display
: flex
;
z
-index
: 99;
width
: 100px
;
height
: 50px
;
position
: absolute
;
left
: 50px
;
justify
-content
: center
;
align
-items
: center
;
}
.disDraw
{
display
: flex
;
z
-index
: 99;
width
: 100px
;
height
: 50px
;
position
: absolute
;
left
: 200px
;
justify
-content
: center
;
align
-items
: center
;
}
.editor
{
display
: flex
;
z
-index
: 99;
width
: 100px
;
height
: 50px
;
position
: absolute
;
left
: 350px
;
justify
-content
: center
;
align
-items
: center
;
}
.diseditor
{
display
: flex
;
z
-index
: 99;
width
: 100px
;
height
: 50px
;
position
: absolute
;
left
: 500px
;
justify
-content
: center
;
align
-items
: center
;
}
.toggle
{
display
: flex
;
z
-index
: 99;
width
: 100px
;
height
: 50px
;
position
: absolute
;
left
: 650px
;
justify
-content
: center
;
align
-items
: center
;
}
.move
{
display
: flex
;
z
-index
: 99;
width
: 100px
;
height
: 50px
;
position
: absolute
;
left
: 800px
;
justify
-content
: center
;
align
-items
: center
;
}
.cut
{
display
: flex
;
z
-index
: 99;
width
: 100px
;
height
: 50px
;
position
: absolute
;
left
: 950px
;
justify
-content
: center
;
align
-items
: center
;
}
.remove
{
display
: flex
;
z
-index
: 99;
width
: 100px
;
height
: 50px
;
position
: absolute
;
left
: 1100px
;
justify
-content
: center
;
align
-items
: center
;
}
.contant
{
height
: 800px
;
position
: relative
;
}
</style
>
图片如下
转载请注明原文地址: https://lol.8miu.com/read-1010.html