在vue使用leaflet手动绘制动态多边形

在vue使用leaflet手动绘制动态多边形

第一步:

// An highlighted block
  data() {
    return {
      map: {},//地图
      points: [],//点
      lines: null,//线
      tempLines: null,//连接
    };

第二步:

// An highlighted block
mounted() {
    // 绘制多边形
    this.lines=L.polyline([])
    this.tempLines=L.polyline([])
    this.map.on('click', this.setVertex);    //点击地图
    this.map.on('mousemove',this.setMoveLine)//双击地图
    this.map.on('dblclick',this.exitDraw);//退出绘制
}

第三步:

// An highlighted block
  methods: {
  // 单击顶点开始绘制
    setVertex(e)
    {
      this.points.push([e.latlng.lat,e.latlng.lng])
      this.lines.addLatLng(e.latlng)
      this.map.addLayer(this.lines)
      this.map.addLayer(L.circle(e.latlng,{color:'#ff0000',fillColor:'ff0000',fillOpacity:1}))

    },
    // 单击后移动绘制线
    setMoveLine(e) {
      if(this.points.length>0) {
        var ls=[this.points[this.points.length-1],[e.latlng.lat,e.latlng.lng]]
        this.tempLines.setLatLngs(ls)
        this.map.addLayer(this.tempLines)
      }
    },
    //双击退出绘制
    exitDraw(e)
    {
      L.polygon([this.points]).addTo(this.map)
      this.points=[]
      this.lines=new L.polyline([])
    }
  }

在这里插入图片描述

Vue.js使用 Leaflet 地图库手动绘制多边形并获取其经纬度数组,你可以按照以下步骤操作: 1. 首先,确保已经在项目中安装了 VueLeaflet。可以使用 Vue CLI 或手动引入 CDN。 2. 引入依赖: ```html <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" /> ``` 3. 在组件里创建一个 Map 组件并初始化 Leaflet 地图: ```js <template> <div id="map-container"> <div ref="map" style="height: 500px; width: 100%"></div> </div> </template> <script> import L from 'leaflet'; export default { data() { return { map: null, markers: [], polygon: null, coordinates: [] }; }, mounted() { this.initMap(); }, methods: { initMap() { this.map = L.map('map-container').setView([51.505, -0.09], 13); // 设置初始中心点和缩放级别 L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors', maxZoom: 18, }).addTo(this.map); // 添加点击事件监听器,用于画线 this.map.on('click', (e) => { const latlng = e.latlng; if (!this.polygon) { this.polygon = new L.Polygon([latlng], { color: 'red' }); this.map.addLayer(this.polygon); this.coordinates.push(latlng); } else { this.polygon.setLatLngs([...this.coordinates, latlng]); this.coordinates.push(latlng); } }); }, getPolygonCoordinates() { return this.coordinates; } } }; </script> ``` 在这个例子中,当你点击地图时会添加一个新的顶点到多边形,直到形成一个完整的闭合路径。`getPolygonCoordinates` 方法会在多边形绘制完成后返回所有的经纬度数组。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值