1

我可以使用角度传单指令将 Geojson 图层添加到传单地图。

我还可以添加传单 Draw 控件并创建新图层(多边形、折线等)

但是,似乎没有直接的方法来启用该指令加载的 GeoJSON 图层的编辑。

代码看起来像这样:

angular.extend($scope, {
                controls: {
                    draw: {}
                }, 
                geojson: {
                     ...........
                     ...........
                }
           });

......

......

<leaflet center="london" controls="controls"  geojson="geojson"></leaflet>

但是,当我尝试编辑图层或创建新图层时,更改发生在不同的图层组中。例如,加载 GeoJSON 后,如果我单击编辑按钮,则通过 GeoJSON 加载的所有项目都不可编辑。

我希望将绘制控件绑定到指令中指定的 GeoJSON 对象。目标是通过 UI 进行的任何修改立即反映在 geojson 对象中,反之亦然。换句话说,我想在编辑控件和 geojson 对象之间进行两种绑定。

4

1 回答 1

1

您需要确保您添加图层的每个地方都将它们添加到“相同”要素/图层组中。

例如,我通常会创建一个可用于 $scope 的功能组,并向该组添加我想要共享功能的图层,例如单击编辑。请务必在从数据加载 GeoJSON 的函数中以及在绘制后添加图层的函数中执行此操作。

$scope.editableFields = new L.FeatureGroup();
var myLayer = L.circle([50.5, 30.5], 200);
$scope.editableFields.addLayer(myLayer);

然后,您需要指定您的控件将针对哪个功能组。类似于:

                controls:{
                         draw: {},
                         edit: {
                           featureGroup: $scope.editableFields;
                          }
                         }
于 2014-12-05T23:21:31.557 回答