微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用leaflet-draw获取图层的特征信息?

如何解决如何使用leaflet-draw获取图层的特征信息?

我创建了一个允许在地图上创建多边形的项目。 我为每个多边形添加一个 AREA,稍后我将使用它

// Html   ERROR IN AREA
<button *ngFor="let layer of areasLayer" (click)="deleteLayer(layer)">{{ layer.feature.area }}</button>
<div leafletDraw (leafletDrawCreated)="onDrawCreated($event)" [leafletDrawOptions]="drawControlConfig">

// TS
onDrawCreated($event) {
    let featureFormat = this.formatAreaToGeoJSON($event.layer.editing.latlngs[0][0]);
    this.addDrawToLayer(featureFormat);
}

formatAreaToGeoJSON(latLong) {
    return {
      "type": "FeatureCollection","features": [{
        "type":"Feature","geometry":{
          "type":"Multipolygon","info": {
            "area": this.getAreaFromCoordinates(latLong),},"coordinates": this.getCoordinates(latLong)
        }
      }]
    };
  }

private addDrawToLayer(geoJSON) {
    let areaLayer = L.geoJSON(geoJSON,{
       onEachFeature:(feature:any,layer:any)=>{
          // click,mouSEOver,mouSEOut functions
          console.log(feature.geometry?.info?.area);
          // works
      },}).addTo(this.map);

    // Add Layer to array of layers
    this.areasLayer = [...this.areasLayer,areaLayer];
  }

onDrawDeleted(layer: any) {
    let layerId = layer._leaflet_id;
    this.map.removeLayer(layer);
    let removeIndex = this.areasLayer.findindex(l => l._leaflet_id == layerId);
    this.areasLayer.splice(removeIndex,1);
}

我想列出添加到地图的图层以及每个图层的标识符。我希望它是我在 formatAreaToGeoJSON 函数添加的区域。

最好的方法是什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。