Snapping to multiple feature layers using esri js api 3.40

301
1
07-14-2022 07:45 PM
JayakumarPD
Occasional Contributor

Hi, I am working on utility network and allowing user to draw utility network in a web browser, the utility network is waterline, sewerline, valve, junction, bulkflow meter etc.,

For choosing the utility netwok I have a drop down, as user chooses the preferable network, I have to control, for which he has to snap 

 

var waterlineFeatureLayer = new FeatureLayer("http://MapServer/15",
{ mode: FeatureLayer.MODE_ONDEMAND,outFields: ["*"]});
var ValveMapServiceLayer = new FeatureLayer("http://MapServer/16",
{ mode: FeatureLayer.MODE_ONDEMAND,outFields: ["*"]});
var BulkfmMapServiceLayer = new FeatureLayer("http://MapServer/17",
{ mode: FeatureLayer.MODE_ONDEMAND,outFields: ["*"]});

snapManager = map.enableSnapping({
alwaysSnap: true,
});

if (selectedValue == 'valve' || selectedValue == 'bfm' || selectedValue == 'junction') {
// this is hapening perfectly
var layerInfos = [{
layer: waterlineFeatureLayer
}];
snapManager.setLayerInfos(layerInfos);
} else if (selectedValue == 'waterline') {
// i have to allow user to snap to both valve and bulkflow meter
// not any other feature layer for example junction, manhole etc.,
var layerInfos2 = [{
layer: ValveMapServiceLayer,
}];
snapManager.setLayerInfos(layerInfos2); 
var layerInfos3 = [{
layer: BulkfmMapServiceLaye
}];
snapManager.setLayerInfos(layerInfos3);
} else {
return;
}

 

I have tried with creating one more snapping manager but not worked

 

snapManager2 = map.enableSnapping({
alwaysSnap: true,});
var layerInfos3 = [{
layer: BulkfmMapServiceLayer
}];
snapManager2.setLayerInfos(layerInfos3);

 

I tried to pass the data like this, but did not worked

 

var layerInfos2 = [{
layer: {ValveMapServiceLayer, BulkfmMapServiceLayer}
}];
snapManager.setLayerInfos(layerInfos2); 

 

 I tried to pass the data like this also but did not worked

 

snapManager.setLayerInfos(layerInfos3, layerInfos2);

 

 There is no code for this kind in blog or stackoverflow.. please help

0 Kudos
1 Reply
JayakumarPD
Occasional Contributor

it has to be passed like this... it is a array of layerInfo objects

if (selectedValue == '2') {
var layerInfos2 = [
{
layer: ValveMapServiceLayer
},
{
layer: BulkfmMapServiceLayer
}
];
snapManager.setLayerInfos(layerInfos2);

 

0 Kudos