POST
|
Nevermind Dominique, I got it to work with this code. Thank you for your help in pointing me in the correct direction. <CheckBox Content="CheckBox" Height="16" HorizontalAlignment="Left" Margin="331,261,0,0" VerticalAlignment="Top" DataContext="{Binding Layers, ElementName=MyMap}" IsChecked="{Binding [GasLayer].ShowLegend, Mode=TwoWay}" />
... View more
11-25-2014
01:34 PM
|
0
|
0
|
956
|
POST
|
I was attempting to keep a copy of the legend item and readd it but it seems like it will be overly complicated for multiple layers. Could you give an example of the binding the layer property to the checkbox? Thanks!
... View more
11-25-2014
12:45 PM
|
0
|
1
|
956
|
POST
|
Hey Dominique, I can successfully remove a legend entry with your example above. How would I go about re-adding an item after removing it? Once I remove the LayerItem from the Legend l no longer have access to that layer to use the insert method. Ex: if(HPGasLegend == false){ if (layerItemVM.Layer.ID == "HP_Gas_Feeder_Layer") { Legend.LayerItems.Remove(e.LayerItem); } } else { // here is where I would like to reinsert the layer above that I removed based on a checkbox checked/unchecked event // when I hover over the legend object and look through the collection I no longer see my layer that with the ID of "HP_Gas_Feeder_Layer" // in the collection } Thanks for any help!
... View more
11-25-2014
07:49 AM
|
0
|
3
|
956
|
POST
|
Sorry I misread your question. I thought you were asking about dynamically generating symbology for a selected layer. My instructions were for that. No problem. Your answer led me to consider some other options for another application. Thanks!
... View more
07-02-2014
09:17 AM
|
0
|
0
|
735
|
POST
|
Thanks for the response Schlot. I have been working through the sample https://developers.arcgis.com/javascript/jssamples/renderer_dynamic_layer_change_attribute.html which allows the user to select a field from the specified service and generate a classification based on that field. It is based on a ArcGISDynamicMapServiceLayer. In order to activate the 'dynamic layers' functionality you have create a geodatabase or shape file workspace and author that as a geodata service Check the box under Capabilities > Mapping in Properties to "Allow per request modification ..." click "Manage" to browse the the geodata service you just made. The geodata service is just a temporary workspace, near as I can tell. It doesn't have anything in it. In my data, I have some values of -999 which indicates 'No data'. I didn't want these to be included when I generated my renderer, so I needed a where clause. In the sample, the function classBreaks is where the GenerateRendererParameters is defined. I added a where clause, shown in red, which takes the field the user selected and excludes the -999 data so it doesn't get used when I generate the renderer. I also needed to round my numbers, since some have too many decimals. It seems to be working just fine. I still need to figure out if you can symbolize this excluded data, with maybe a gray color or something. Is this the only way that you know of to implement a where clause? This seems very involved considering a feature service is this simple:
FeatureLayer l = new FeatureLayer()
{
ID = "MyFeatureLayer",
Url = "http://serverNameBlahBlah/WPFTestFeatureLayer/FeatureServer/0",
//Where = "1=1"
Where = "ASSIGNED_TO = 'GIS_USER'"
//,
//Renderer = "{StaticResource MySimplePointRenderer}"
};
... View more
07-01-2014
10:56 AM
|
0
|
0
|
735
|
POST
|
Hi, Is it possible to set a where clause on a Dynamic Map Service Layer? I would like to filter my display by a field that changes depending on user interactions or user privledges to see certain data. I have used a feature service to do this but thought it would be nice for "read-only" users. I also wouldn't have to create a second feature service with update, add, delete unchecked for read only users. Thanks
... View more
07-01-2014
05:03 AM
|
0
|
6
|
1429
|
POST
|
I am attempting to get an application working where editors can click on a point feature and edit a form. I need the form to have a save button that when clicked will apply the edits to the feature. I am selecting the point/s using an envelope. Is there a way I can tell what feature I need to apply the edits to on my save click event? I would like to store the edits to a feature as fields are changed and then only save the edits to the feature class with the save button. I am trying to use this example to understand the edit saving and then the feature save. Attribute Inspector Here is what I am working with right now. I am grabbing the point features within an envelope: function initEditor() {
var featureLayer = layersFS[1].layer;
var selectQuery = new Query();
map.on("click", function (evt) {
var centerPoint = new esri.geometry.Point
(evt.mapPoint.x, evt.mapPoint.y, evt.mapPoint.spatialReference);
var mapWidth = map.extent.getWidth();
//Divide width in map units by width in pixels
var pixelWidth = mapWidth / map.width;
//Calculate a 10 pixel envelope width (5 pixel tolerance on each side)
var tolerance = 10 * pixelWidth;
//build query filter
query = new esri.tasks.Query();
query.returnGeometry = true;
query.outFields = ["*"];
//Build tolerance envelope and set it as the query geometry
var queryExtent = new esri.geometry.Extent
(1, 1, tolerance, tolerance, evt.mapPoint.spatialReference);
query.geometry = queryExtent.centerAt(centerPoint);
featureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function (features) {
if (features.length > 0) {
//store the current feature
for (var i = 0; i < features.length; i++) {
updateFeatures.push(features);
}
//map.infoWindow.setTitle(features[0].getLayer().name);
map.infoWindow.show(evt.screenPoint, map.getInfoWindowAnchor(evt.screenPoint));
} else {
map.infoWindow.hide();
}
});
}); Then I am planning to update the specific feature with the save button: saveButton.on("click", function () {
//need to figure out how to get the current feature with the save click,
//the envelope may return 1 to many records and I need the current feature
updateFeatures.forEach(function(entry) {
updateFeature.getLayer().applyEdits(null, [updateFeature], null);
}
)});
///////Need to apply similar logic as save button click but this will update the current feature in the updateFeatures[]
attInspector.on("attribute-change", function (evt) {
//store the updates to apply when the save button is clicked
updateFeature.attributes[evt.fieldName] = evt.fieldValue;
}); What is the best way to determine what my current feature is in the info window that is being edited? Thanks for any advice!
... View more
04-22-2014
09:38 AM
|
0
|
6
|
1553
|
POST
|
as long as the graphic geometry type matches what is published in your feature service you can call featureLayer.applyEdits() and pass it in within the 'adds' parameter. check out this sample for an example of the method in action. I see what you are referring to in the sample: selectedTemplate.featureLayer.applyEdits([newGraphic], null, null); I am able to add the graphic to the map but it isn't saving to the feature layer. Am I missing something?? I am trying to combine the Draw Graphics on the map example with the example you posted a link to Above.
var map, toolbar, symbol, geomTask;
require([
"esri/map",
"esri/layers/ArcGISDynamicMapServiceLayer",
"esri/layers/FeatureLayer",
"esri/toolbars/draw",
"esri/graphic",
"esri/symbols/SimpleMarkerSymbol",
"esri/symbols/SimpleLineSymbol",
"esri/symbols/SimpleFillSymbol",
"dojo/parser",
"dijit/registry",
"dijit/form/Button",
"dijit/form/ValidationTextBox",
"esri/dijit/editing/Editor-all",
"dijit/layout/BorderContainer",
"dijit/layout/ContentPane",
"dojo/domReady!"
], function (
Map, ArcGISDynamicMapServiceLayer, FeatureLayer, Draw, Graphic,
SimpleMarkerSymbol, SimpleLineSymbol, SimpleFillSymbol,
parser, registry, button, validationTextBox, editorAll, borderContainer, contentPane
) {
parser.parse();
esri.config.defaults.geometryService = new esri.tasks.GeometryService("http://gisadev:6080/arcgis/rest/services/Utilities/Geometry/GeometryServer");
// Create the map
map = new Map("map")
streetsLayer = new esri.layers.ArcGISDynamicMapServiceLayer("http://gisaprd/ArcGIS/rest/services/SRSLandbase/MapServer", { "id": "Streets" });
map.addLayer(streetsLayer);
map.on("load", createToolbar);
dojo.connect(map, "onLayersAddResult", initEditor);
//Add the editable feature layer to the map
var ISS_Features = new esri.layers.FeatureLayer("http://gisadev:6080/arcgis/rest/services/ISS_Inspections/FeatureServer/0", {
mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
outFields: ['*']
});
map.addLayers([ISS_Features]);
RedlinePointLayer = new esri.layers.FeatureLayer("http://gisadev:6080/arcgis/rest/services/Redline_Test/FeatureServer/0", {
mode: FeatureLayer.MODE_SNAPSHOT,
editable: true,
outFields: ["*"]
});
map.addLayers([RedlinePointLayer]);
// loop through all dijits, connect onClick event
// listeners for buttons to activate drawing tools
registry.forEach(function (d) {
// d is a reference to a dijit
// could be a layout container or a button
if (d.declaredClass === "dijit.form.Button") {
d.on("click", activateTool);
}
});
function activateTool() {
var tool = this.label.toUpperCase().replace(/ /g, "_");
toolbar.activate(Draw[tool]);
map.hideZoomSlider();
}
function createToolbar(themap) {
toolbar = new Draw(map);
toolbar.on("draw-end", addToMap);
}
function addToMap(evt) {
var symbol;
toolbar.deactivate();
map.showZoomSlider();
switch (evt.geometry.type) {
case "point":
case "multipoint":
symbol = new SimpleMarkerSymbol();
break;
case "polyline":
symbol = new SimpleLineSymbol();
break;
default:
symbol = new SimpleFillSymbol();
break;
}
var graphic = new Graphic(evt.geometry, symbol);
map.graphics.add(graphic);
//To save the redline I need to add the graphic to the redline feature class......
if (graphic.symbol = SimpleMarkerSymbol) {
RedlinePointLayer.add(new esri.Graphic(graphic.geometry, RedlinePointLayer.symbol), null, null);
}
}
function initEditor(results) {
//only one layer
var featureLayer = results[0].layer;
var templatePicker = new esri.dijit.editing.TemplatePicker({
featureLayers: [featureLayer],
rows: 'auto',
groupingEnabled: false,
columns: 1
}, 'editorDiv');
templatePicker.startup();
var layerInfos = [{
'featureLayer': featureLayer,
'showAttachments': false,
'showDeleteButton': false,
'isEditable': true,
'fieldInfos': [
{ 'fieldName': 'METER_NUMBER', 'isEditable': true, 'tooltip': 'METER_NUMBER', 'label': 'METER_NUMBER:' },
]
}];
//define the editor settings
var settings = {
map: map,
templatePicker: templatePicker,
layerInfos: layerInfos
};
var params = { settings: settings };
//Create the editor widget
var editorWidget = new esri.dijit.editing.Editor(params);
editorWidget.startup();
//resize the info window (attribute inspector)
map.infoWindow.resize(430, 245);
}
});
... View more
03-28-2014
10:46 AM
|
0
|
0
|
726
|
POST
|
Yes, we've been able to publish it, but I'm sure there were a couple of errors thrown up along the way that we had to address first. Could you give the details of the errors? Thanks for your response. "Layer's data source is not supported (Feature Service)" I also cannot edit the view through ArcMap (because it is a view?) even though I granted Select, Insert, Update, and Delete privileges.
... View more
03-20-2014
07:21 AM
|
0
|
0
|
1215
|
POST
|
That link sounds like the process my colleague followed. She tells me she was using the command line on the Oracle server itself, it wasn't via ArcCatalog. Hope this helps and it works out for you. I am getting an error trying to create a feature service. Are you able to create the feature service with your new view?
... View more
03-20-2014
07:04 AM
|
0
|
0
|
1215
|
POST
|
That link sounds like the process my colleague followed. She tells me she was using the command line on the Oracle server itself, it wasn't via ArcCatalog. Hope this helps and it works out for you. To anyone else looking into doing this, the process works great for viewing data in ArcMap or a Map Service. Editing won't work because it is a view.
... View more
03-20-2014
07:02 AM
|
0
|
0
|
1215
|
POST
|
Was the command line tool used to create your "spatial view" an ArcCatalog command line tool? I also found a way to create the spatial view through SQL statements for anyone else researching this. http://resources.arcgis.com/en/help/main/10.2/index.html#//002n000000t3000000
... View more
03-19-2014
12:20 PM
|
0
|
0
|
1215
|
POST
|
Hi, I think it turned out the answer was right under my nose the whole time: "- Layer has an in-memory join or relate (Feature Service)" It turned out that you couldn't use a layer with a join active on it to author a Feature Service (it's OK for a Map Service though). I had a specific need to publish a Feature Service, and we ended up with my colleague the database expert creating an SDE 'spatial view' instead, using command-line tools (we use Oracle for our database). The spatial view brings together the geography, plus variou fields from various tables but just to look at it you wouldn't know it's any different from any other feature class. Esri tech support helped us with getting the spatial view constructed when we ran into a problem. Hope this helps, good luck! Was the command line tool used to create your "spatial view" an ArcCatalog command line tool?
... View more
03-19-2014
11:37 AM
|
0
|
0
|
1215
|
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:23 AM
|