Before enabling creation or editing capabilities, make sure that your model defines an IFeatureModelUpdater
IFeatureModelUpdater
IFeatureModelUpdater
.
You typically do that by calling FeatureModelBuilder::editable(true)
when you are creating your model:
auto editableModel = FeatureModelBuilder::newBuilder()
.modelMetadata(modelMetadata)
.featureModelMetadata(featureModelMetadata)
.bounds(modelBounds)
.features({})
.editable(true)
.build();
var editableModel = FeatureModelBuilder.NewBuilder()
.ModelMetadata(modelMetadata)
.FeatureModelMetadata(featureModelMetadata)
.Features(new List<Feature>())
.Editable(true)
.Build();
IFeatureModel editableModel = FeatureModelBuilder.newBuilder()
.modelMetadata(modelMetadata)
.featureModelMetadata(featureModelMetadata)
.features(Collections.emptyList())
.editable(true)
.build();
To allow users to edit the geometry of military symbols interactively, you must enable the editing behavior in the feature layer builder. This snippet shows you how to do that:
// Create a layer from a military symbols model and make it editable
auto layer = FeatureLayer::newBuilder() //
.model(militarySymbologyModel)
.editable(true)
.build();
// Create a layer from a military symbols model and make it editable
var layer = FeatureLayer.NewBuilder()
.Model(militarySymbologyModel)
.Editable(true)
.Build();
// Create a layer from a military symbols model and make it editable
FeatureLayer layer = FeatureLayer.newBuilder()
.model(militarySymbologyModel)
.editable(true)
.build();
See this article for more information about editing.
To allow users to insert new military symbols on the map, you must pass the correct IGeometryCreator
IGeometryCreator
IGeometryCreator
to your controller’s Creator
Creator
Creator
.
You can retrieve the geometry creator from the MilitarySymbologyNode
MilitarySymbologyNode
MilitarySymbologyNode
:
// set up a Creator for the feature and its geometry.
auto standard = MilitarySymbology::Standard::MilStd2525b;
auto symbol = MilitarySymbol::create(standard, "G*G*GPAR--****X");
auto featureCreator = std::make_shared<MilitarySymbolFeatureCreator>(symbol);
// wire creation to the controller (here we're using DefaultController)
defaultController->setCreator(Creator::newBuilder().layer(layer).map(map).featureCreator(featureCreator).build());
// set up a Creator for the feature and its geometry.
var standard = MilitarySymbology.Standard.MilStd2525b;
var symbol = MilitarySymbol.Create(standard, "G*G*GPAR--****X");
var featureCreator = new MilitarySymbolFeatureCreator(symbol);
// wire creation to the controller (here we're using DefaultController)
defaultController.Creator = Creator.NewBuilder().Layer(editableLayer).Map(map).FeatureCreator(featureCreator).Build();
// set up a Creator for the feature and its geometry.
MilitarySymbology.Standard standard = MilitarySymbology.Standard.MilStd2525b;
MilitarySymbol symbol = MilitarySymbol.create(standard, "G*G*GPAR--****X");
MilitarySymbolFeatureCreator featureCreator = new MilitarySymbolFeatureCreator(symbol);
// Wire creation to the controller (here we're using DefaultController)
defaultController.setCreator(Creator.newBuilder().layer(editableLayer).map(map).featureCreator(featureCreator).build());
See this article for more information about creation.