private void GetLayerProperties() { Configuration.LayerRow layer = Configuration.Layer.First(o => o.LayerID == Request.Form["layer"]); Dictionary <String, Object> result = new Dictionary <String, Object>(); result.Add("supportsMailingLabels", layer.GetLayerFunctionRows().Any(o => o.FunctionName.ToLower() == "mailinglabel")); result.Add("supportsExportData", layer.GetLayerFunctionRows().Any(o => o.FunctionName.ToLower() == "export")); ReturnJson(result); }
public static DataListBuilder SearchMapTab(string mapTabID, string[] visibleLayers, string levelID, double x, double y, double distance, double scale, bool addSpace) { DataListBuilder dataListBuilder = new DataListBuilder(); Configuration config = AppContext.GetConfiguration(); Configuration.MapTabRow mapTab = config.MapTab.First(o => o.MapTabID == mapTabID); CommonDataFrame dataFrame = AppContext.GetDataFrame(mapTab); Dictionary <String, Configuration.LayerRow> layers = new Dictionary <String, Configuration.LayerRow>(); Dictionary <String, Configuration.LayerFunctionRow> layerFunctions = new Dictionary <String, Configuration.LayerFunctionRow>(); bool useDefaultVisible = visibleLayers.Length == 1 && visibleLayers[0] == "*"; foreach (Configuration.MapTabLayerRow mapTabLayer in mapTab.GetMapTabLayerRows()) { bool isCandidateLayer = mapTab.IsInteractiveLegendNull() || mapTab.InteractiveLegend == 0; if (!isCandidateLayer) { bool shownInLegend = !mapTabLayer.IsShowInLegendNull() && mapTabLayer.ShowInLegend == 1; bool checkedInLegend = mapTabLayer.IsCheckInLegendNull() || mapTabLayer.CheckInLegend < 0 || visibleLayers.Any(o => o == mapTabLayer.LayerID); bool defaultVisible = useDefaultVisible && !mapTabLayer.IsCheckInLegendNull() && mapTabLayer.CheckInLegend == 1; isCandidateLayer = !shownInLegend || checkedInLegend || defaultVisible; } if (isCandidateLayer) { Configuration.LayerRow layer = mapTabLayer.LayerRow; Configuration.LayerFunctionRow layerFunction = layer.GetLayerFunctionRows().FirstOrDefault(o => o.FunctionName.ToLower() == "identify"); if (layerFunction != null) { layers.Add(layer.LayerName, layer); layerFunctions.Add(layer.LayerName, layerFunction); } } } foreach (CommonLayer commonLayer in dataFrame.Layers) { DataTable table = null; if (layers.ContainsKey(commonLayer.Name) && commonLayer.IsWithinScaleThresholds(scale)) { Configuration.LayerRow layer = layers[commonLayer.Name]; if (commonLayer.Type == CommonLayerType.Feature) { CommonField keyField = commonLayer.FindField(layer.KeyField); string levelQuery = layer.GetLevelQuery(commonLayer, levelID); table = commonLayer.GetFeatureTable(keyField.Name, levelQuery, x, y, commonLayer.FeatureType == OgcGeometryType.MultiPolygon ? 0 : distance * scale); } if (commonLayer.Type == CommonLayerType.Image && commonLayer is AgsLayer) { string id = ((AgsLayer)commonLayer).GetRasterValue(x, y); table = new DataTable(); table.Columns.Add("ID"); table.Rows.Add(id); } } if (table != null && table.Rows.Count > 0) { Configuration.LayerFunctionRow layerFunction = layerFunctions[commonLayer.Name]; foreach (DataRow row in table.Rows) { string id = row[0].ToString(); using (OleDbCommand command = layerFunction.GetDatabaseCommand()) { command.Parameters[0].Value = id; if (command.Parameters.Count > 1) { command.Parameters[1].Value = AppUser.GetRole(); } using (OleDbDataReader reader = command.ExecuteReader()) { dataListBuilder.AddFromReader(reader, addSpace); } command.Connection.Dispose(); } } } } return(dataListBuilder); }
private void DefaultMethod() { string v = Request.Form["visiblelayers"]; string[] visibleLayers = v == null ? new string[0] : v.Split('\u0001'); string level = Request.Form["level"]; double x = Convert.ToDouble(Request.Form["x"]); double y = Convert.ToDouble(Request.Form["y"]); double distance = Convert.ToDouble(Request.Form["distance"]); double scale = Convert.ToDouble(Request.Form["scale"]); Configuration config = AppContext.GetConfiguration(); Configuration.MapTabRow mapTab = config.MapTab.First(o => o.MapTabID == Request.Form["maptab"]); CommonDataFrame dataFrame = AppContext.GetDataFrame(mapTab); Dictionary <String, Configuration.LayerRow> layers = new Dictionary <String, Configuration.LayerRow>(); Dictionary <String, Configuration.LayerFunctionRow> layerFunctions = new Dictionary <String, Configuration.LayerFunctionRow>(); foreach (Configuration.MapTabLayerRow mapTabLayer in mapTab.GetMapTabLayerRows()) { bool isCandidateLayer = mapTab.IsInteractiveLegendNull() || mapTab.InteractiveLegend == 0; if (!isCandidateLayer) { bool shownInLegend = !mapTabLayer.IsShowInLegendNull() && mapTabLayer.ShowInLegend == 1; bool checkedInLegend = mapTabLayer.IsCheckInLegendNull() || mapTabLayer.CheckInLegend < 0 || visibleLayers.Any(o => o == mapTabLayer.LayerID); isCandidateLayer = !shownInLegend || checkedInLegend; } if (isCandidateLayer) { Configuration.LayerRow layer = mapTabLayer.LayerRow; Configuration.LayerFunctionRow layerFunction = layer.GetLayerFunctionRows().FirstOrDefault(o => o.FunctionName.ToLower() == "maptip"); if (layerFunction != null) { layers.Add(layer.LayerName, layer); layerFunctions.Add(layer.LayerName, layerFunction); } } } string tipText = null; for (int i = 0; i < dataFrame.Layers.Count - 1 && tipText == null; ++i) { CommonLayer commonLayer = dataFrame.Layers[i]; string id = null; if (layers.ContainsKey(commonLayer.Name) && commonLayer.IsWithinScaleThresholds(scale)) { if (commonLayer.Type == CommonLayerType.Feature) { Configuration.LayerRow layer = layers[commonLayer.Name]; string levelQuery = layer.GetLevelQuery(commonLayer, level); CommonField keyField = commonLayer.FindField(layer.KeyField); DataTable table = commonLayer.GetFeatureTable(keyField.Name, levelQuery, x, y, commonLayer.FeatureType == OgcGeometryType.MultiPolygon ? 0 : distance * scale); if (table != null && table.Rows.Count > 0) { id = table.Rows[table.Rows.Count - 1][0].ToString(); } } if (commonLayer.Type == CommonLayerType.Image) { id = ((AgsLayer)commonLayer).GetRasterValue(x, y); } } if (!String.IsNullOrEmpty(id)) { Configuration.LayerFunctionRow layerFunction = layerFunctions[commonLayer.Name]; using (OleDbCommand command = layerFunction.GetDatabaseCommand()) { command.Parameters[0].Value = id; if (command.Parameters.Count > 1) { command.Parameters[1].Value = AppUser.GetRole(); } using (OleDbDataReader reader = command.ExecuteReader()) { if (reader.Read()) { StringCollection text = new StringCollection(); for (int j = 0; j < reader.FieldCount; ++j) { if (!reader.IsDBNull(j)) { text.Add(reader.GetValue(j).ToString()); } } if (text.Count > 0) { tipText = text.Join("\n"); } } } command.Connection.Close(); } } } if (tipText == null) { ReturnJson(null); } else { Dictionary <String, Object> result = new Dictionary <String, Object>(); result.Add("tipText", tipText); ReturnJson(result); } }