void optionsConfigControl_NewUniqueValueCreated(object sender, NewUniqueValueInfoEventArgs e) { if (RendererSymbolSetContainerControl != null) { UniqueValueRendererSymbolsConfigControl symbolsConfigControl = RendererSymbolSetContainerControl.Content as UniqueValueRendererSymbolsConfigControl; if (symbolsConfigControl != null) { FieldType fieldType = FieldType.Text; GraphicsLayer graphicsLayer = Layer as GraphicsLayer; if (graphicsLayer == null) { return; } UniqueValueRenderer uniqueValueRenderer = graphicsLayer.Renderer as UniqueValueRenderer; if (uniqueValueRenderer == null) { return; } Collection <FieldInfo> fields = ESRI.ArcGIS.Mapping.Core.LayerExtensions.GetFields(graphicsLayer); if (fields != null) { FieldInfo selectedField = fields.FirstOrDefault <FieldInfo>(f => f.Name == uniqueValueRenderer.Field); if (selectedField != null) { fieldType = selectedField.FieldType; symbolsConfigControl.AddNewUniqueValue(createNewUniqueValue(e.UniqueValue, fieldType), fieldType); graphicsLayer.Refresh(); } } } } }
void refreshLayer() { GraphicsLayer graphicsLayer = Layer as GraphicsLayer; if (graphicsLayer != null) { graphicsLayer.Refresh(); } }
public static void ChangeClusterRadius(this GraphicsLayer layer, int newValue) { if (layer == null) { return; } FlareClusterer clusterer = layer.Clusterer as FlareClusterer; if (clusterer != null) { clusterer.Radius = newValue; layer.Refresh(); } }
void GraphicSymbolsTakePrecedence_Checked(object sender, RoutedEventArgs e) { if (bindingToLayer) { return; } GraphicsLayer graphicsLayer = Layer as GraphicsLayer; if (graphicsLayer != null && GraphicSymbolsTakePrecedence != null && GraphicSymbolsTakePrecedence.IsChecked.HasValue) { graphicsLayer.RendererTakesPrecedence = !(GraphicSymbolsTakePrecedence.IsChecked.Value); graphicsLayer.Refresh(); } }
public static FieldInfo ChangeAttributeForRenderer(this GraphicsLayer graphicsLayer, FieldInfo newAttributeField) { IRenderer newRenderer = null; GeometryType geometryType = ESRI.ArcGIS.Mapping.Core.LayerExtensions.GetGeometryType(graphicsLayer); LinearGradientBrush gradientBrush = ESRI.ArcGIS.Mapping.Core.LayerExtensions.GetGradientBrush(graphicsLayer); FieldInfo changedAttribute = null; List <Symbol> existingSymbolSet; ClassBreaksRenderer classBreaksRenderer = graphicsLayer.Renderer as ClassBreaksRenderer; if (classBreaksRenderer != null) { existingSymbolSet = new List <Symbol>(); foreach (ClassBreakInfo classBreak in classBreaksRenderer.Classes) { existingSymbolSet.Add(classBreak.Symbol); } newRenderer = createClassBreakRendererBasedOnSelectedAttribute(graphicsLayer, newAttributeField, gradientBrush, geometryType, classBreaksRenderer.Classes.Count, existingSymbolSet, out changedAttribute); } else { UniqueValueRenderer uniqueValueRenderer = graphicsLayer.Renderer as UniqueValueRenderer; if (uniqueValueRenderer != null) { existingSymbolSet = new List <Symbol>(); foreach (UniqueValueInfo uniqueValue in uniqueValueRenderer.Infos) { existingSymbolSet.Add(uniqueValue.Symbol); } newRenderer = createUniqueValueRendererBasedOnSelectedAttribute(graphicsLayer, newAttributeField, gradientBrush, geometryType, existingSymbolSet, out changedAttribute); } } assignNewRendererToLayer(graphicsLayer, newRenderer); graphicsLayer.Refresh(); if (changedAttribute != null) { ESRI.ArcGIS.Mapping.Core.LayerExtensions.SetRendererAttributeDisplayName(graphicsLayer, changedAttribute.DisplayName); } else if (newAttributeField != null) { ESRI.ArcGIS.Mapping.Core.LayerExtensions.SetRendererAttributeDisplayName(graphicsLayer, newAttributeField.DisplayName); } else { ESRI.ArcGIS.Mapping.Core.LayerExtensions.SetRendererAttributeDisplayName(graphicsLayer, null); } return(changedAttribute); }
private void RefreshRoutesLayer() { if (InEditMode) { if (_customLayerRoutes != null) { _customLayerRoutes.Refresh(); } } else { FeatureLayer routesFeatureLayer = FindFeatureLayer(_routesDataSource); if (routesFeatureLayer != null) { routesFeatureLayer.Refresh(); } } }
public void Render(double[] vec) { if (vec == null) { return; } // var statinfo = StatHelper.Get(vec); var breaks = JenksFisher.CreateJenksFisherBreaksArray(vec, ColourRampCount + 1); if (breaks.Count <= 1) { return; } //MessageBox.Show(breaks.Count.ToString()); //Console.WriteLine(breaks.Count); Console.WriteLine(breaks); for (int i = 0; i < _GraphicsLayer.Graphics.Count; i++) { var color = _ClassColor[0]; for (int j = 0; j < ColourRampCount; j++) { if (vec[i] >= breaks[j] && vec[i] < breaks[j + 1]) { color = _ClassColor[j]; break; } } var symbol = _GraphicsLayer.Graphics[i].Symbol as SimpleFillSymbol; symbol.Fill = new System.Windows.Media.SolidColorBrush(color) { Opacity = Opacity }; symbol.BorderThickness = BorderThickness; } _GraphicsLayer.Refresh(); }
private void openShp_Click(object sender, RoutedEventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Multiselect = true; if (!(ofd.ShowDialog() ?? false)) { return; } FileInfo shapeFile = null; FileInfo dbfFile = null; foreach (FileInfo fi in ofd.Files) { if (fi.Extension.ToLower() == ".shp") { shapeFile = fi; } if (fi.Extension.ToLower() == ".dbf") { dbfFile = fi; } } //Read the SHP and DBF files into the ShapeFileReader ShapeFile shapeFileReader = new ShapeFile(); if (shapeFile != null && dbfFile != null) { shapeFileReader.Read(shapeFile, dbfFile); } else { HtmlPage.Window.Alert("Please select a SP and a DBF file to proceed."); return; } GraphicsLayer graphicsLayer = Map.Layers["Shenzhen Boundary"] as GraphicsLayer; graphicsLayer.Graphics.Clear(); Symbol MySm = new SimpleFillSymbol() { BorderBrush = new System.Windows.Media.SolidColorBrush(Colors.White) { }, BorderThickness = 1, Fill = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Transparent) { Opacity = 0 } }; foreach (ShapeFileRecord record in shapeFileReader.Records) { Graphic graphic = record.ToGraphic(); if (graphic != null) { graphic.Symbol = MySm; graphic.Geometry.SpatialReference = new SpatialReference(4326); graphicsLayer.Graphics.Add(graphic); } } graphicsLayer.Refresh(); }
private void RefreshLayer(Layer layer, EventHandler refreshCompletedHander, EventHandler <TaskFailedEventArgs> refreshFailedHandler) { _isRefreshing = true; FeatureLayer featureLayer = layer as FeatureLayer; if (featureLayer != null && !string.IsNullOrEmpty(featureLayer.Url)) { // temporarly unhook the AttributeDisplay's layer while we refresh feature layer if (View.Instance != null && View.Instance.AttributeDisplay != null && View.Instance.AttributeDisplay.FeatureDataGrid != null) { ToggleTableCommand.SetTableVisibility(Visibility.Collapsed); // Set FeatureDataGrid layer to null so that we don't incur the overhead // of all the UpdateItemSource calls as the AttributeTable Graphics layer is // being set to null. View.Instance.AttributeDisplay.FeatureDataGrid.GraphicsLayer = null; // Set the FilterSource to null to prevent potential GraphicsLayer reference exceptions View.Instance.AttributeDisplay.FeatureDataGrid.FilterSource = null; // Now set the AttributeDisplay GraphicsLayer to null so that it // unhooks all the bindings and events View.Instance.AttributeDisplay.GraphicsLayer = null; // Hook up to the UpdateCompleted/UpdateFailed events so that the layer // can be reset to the SelectedLayer featureLayer.UpdateCompleted -= OnFeatureLayerUpdateCompleted; featureLayer.UpdateCompleted += OnFeatureLayerUpdateCompleted; featureLayer.UpdateFailed -= OnFeatureLayerUpdateFailed; featureLayer.UpdateFailed += OnFeatureLayerUpdateFailed; } if (refreshCompletedHander != null) { featureLayer.UpdateCompleted -= refreshCompletedHander; featureLayer.UpdateCompleted += refreshCompletedHander; } if (refreshFailedHandler != null) { featureLayer.UpdateFailed -= refreshFailedHandler; featureLayer.UpdateFailed += refreshFailedHandler; } featureLayer.Update(); return; } ArcGISDynamicMapServiceLayer dynamicLayer = layer as ArcGISDynamicMapServiceLayer; if (dynamicLayer != null) { dynamicLayer.Refresh(); if (refreshCompletedHander != null) { refreshCompletedHander.Invoke(layer, EventArgs.Empty); } return; } ArcGISTiledMapServiceLayer tiledLayer = layer as ArcGISTiledMapServiceLayer; if (tiledLayer != null) { // Tiled layers do not support refreshing if (refreshCompletedHander != null) { refreshCompletedHander.Invoke(layer, EventArgs.Empty); } return; } ArcGISImageServiceLayer imageServiceLayer = layer as ArcGISImageServiceLayer; if (imageServiceLayer != null) { imageServiceLayer.Refresh(); if (refreshCompletedHander != null) { refreshCompletedHander.Invoke(layer, EventArgs.Empty); } return; } ICustomGraphicsLayer customGraphicsLayer = layer as ICustomGraphicsLayer; if (customGraphicsLayer != null) { customGraphicsLayer.ForceRefresh(refreshCompletedHander, refreshFailedHandler); return; } HeatMapLayerBase heatMapLayer = layer as HeatMapLayerBase; if (heatMapLayer != null) { heatMapLayer.Update(); if (refreshCompletedHander != null) { refreshCompletedHander.Invoke(layer, EventArgs.Empty); } return; } GeoRssLayer geoRssLayer = Layer as GeoRssLayer; if (geoRssLayer != null) { geoRssLayer.Update(); return; } WmsLayer wmsLayer = Layer as WmsLayer; if (wmsLayer != null) { wmsLayer.Refresh(); return; } GraphicsLayer graphicsLayer = layer as GraphicsLayer; if (graphicsLayer != null) { graphicsLayer.Refresh(); if (refreshCompletedHander != null) { refreshCompletedHander.Invoke(layer, EventArgs.Empty); } return; } }
public static void ApplyColorRampGradientBrushToRenderer(this GraphicsLayer graphicsLayer, LinearGradientBrush brush) { // must have atleast 2 stops if (brush == null || brush.GradientStops.Count < 2) { return; } if (graphicsLayer == null) { return; } ESRI.ArcGIS.Mapping.Core.LayerExtensions.SetGradientBrush(graphicsLayer, brush); ClassBreaksRenderer classBreaskRenderer = graphicsLayer.Renderer as ClassBreaksRenderer; if (classBreaskRenderer != null) { if (classBreaskRenderer.Classes.Count < 2) { return; } List <Symbol> symbols = new List <Symbol>(); foreach (ClassBreakInfo classBreak in classBreaskRenderer.Classes) { symbols.Add(classBreak.Symbol); } applyLinearGradientBrushToSymbolSet(symbols, brush, classBreaskRenderer.DefaultSymbol); // Some changes to ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleSymbols do not trigger the legendchanged event. Fix this by triggering the event by cloning the symbol. bool refresh = false; foreach (ClassBreakInfo classBreak in classBreaskRenderer.Classes) { if (classBreak.Symbol is ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleMarkerSymbol || classBreak.Symbol is ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleLineSymbol || classBreak.Symbol is ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleFillSymbol) { classBreak.Symbol = classBreak.Symbol.CloneSymbol(); refresh = true; } } if (refresh) { graphicsLayer.Refresh(); //Only the first time a gradientbrush is applied the layer refreshes itself, so fix this by refreshing manually. } } else { UniqueValueRenderer uniqueValueRenderer = graphicsLayer.Renderer as UniqueValueRenderer; if (uniqueValueRenderer != null) { List <Symbol> symbols = new List <Symbol>(); foreach (UniqueValueInfo uniqueValue in uniqueValueRenderer.Infos) { symbols.Add(uniqueValue.Symbol); } applyLinearGradientBrushToSymbolSet(symbols, brush, uniqueValueRenderer.DefaultSymbol); // Some changes to ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleSymbols do not trigger the legendchanged event. Fix this by triggering the event by cloning the symbol. bool refresh = false; foreach (UniqueValueInfo uniqueValue in uniqueValueRenderer.Infos) { if (uniqueValue.Symbol is ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleMarkerSymbol || uniqueValue.Symbol is ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleLineSymbol || uniqueValue.Symbol is ESRI.ArcGIS.Client.FeatureService.Symbols.SimpleFillSymbol) { uniqueValue.Symbol = uniqueValue.Symbol.CloneSymbol(); refresh = true; } } if (refresh) { graphicsLayer.Refresh(); //Only the first time a gradientbrush is applied the layer refreshes itself, so fix this by refreshing manually. } } } }
public static IObservable<MultiPoint> DrawMultiPointDynamic(this Map map, GraphicsLayer gLayer) { var obs = map.DrawPointsDynamic(); MultiPoint mps = new MultiPoint(); Graphic g = new Graphic() { Symbol = new SimpleMarkerSymbol() { ControlTemplate = drawingPointTemplate }, Geometry = mps }; gLayer.Graphics.Add(g); gLayer.Refresh(); var click = obs.Key.Publish(); var dblClick = obs.Value.Publish(); click.Subscribe(next => { mps.Points.Add(next); gLayer.Refresh(); }); dblClick.Subscribe(next => { RemoveEndingDuplicatePoint(mps.Points); //mps.Points.Clear(); gLayer.Graphics.Remove(g); gLayer.Refresh(); click.Connect(); dblClick.Connect(); }); click.Connect(); dblClick.Connect(); return from pts in dblClick select mps; }
private async void ApplyNewRoutes(string json) { bool bErrorResponse = false; string requestId = AnalyzeResponse(json, true, out bErrorResponse); if (requestId == null) { // this is not a response to my request return; } if (bErrorResponse) { // this is an error response to my request RefreshView(); CloseProgressDialog(); return; } using (new WaitCursor()) { try { Log.Trace("Received new Stops and Routes:\n" + json); // parse the new calculated route and stops JObject jobjRoot = JObject.Parse(json); //Log.Trace("Received new Stops and Routes:\n" + jobjRoot.ToString(Newtonsoft.Json.Formatting.Indented)); IDictionary <string, JToken> responseDictionary = jobjRoot as IDictionary <string, JToken>; if (responseDictionary.ContainsKey("Route-Stop")) { // stops JArray jStops = responseDictionary["Route-Stop"] as JArray; foreach (JToken stop in jStops) { // add the route name to the edited set JToken routeNameToken = stop.SelectToken(StopsRouteNameFieldName); if (routeNameToken != null) { string routeName = routeNameToken.ToString(); _edits.Add(routeName); } // remove the existing graphic from _customLayer JToken trackIdToken = stop.SelectToken(TrackIdFieldName); if (trackIdToken != null) { string trackId = trackIdToken.ToString(); Graphic graphicFound = FindTrackIdInGraphics(trackId, _customLayerStops.Graphics, TrackIdFieldName); if (graphicFound != null) { _customLayerStops.Graphics.Remove(graphicFound); } } // add a new graphic to _customLayer Graphic graphic = StopToGraphic(stop); _customLayerStops.Graphics.Add(graphic); } _customLayerStops.Refresh(); // update the data grid to reflect the graphics in _customLayer Update(_customLayerStops.Graphics); } // routes if (responseDictionary.ContainsKey("Route-Route")) { JArray jRoutes = responseDictionary["Route-Route"] as JArray; foreach (JToken route in jRoutes) { // add the route name to the edited set JToken routeNameToken = route.SelectToken(RoutesRouteNameFieldName); if (routeNameToken != null) { string routeName = routeNameToken.ToString(); _edits.Add(routeName); RemoveRoute(routeName, true, false, null); // add a new graphic to _routesCustomLayer Graphic graphic = RouteToGraphic(route); if (graphic != null) { _customLayerRoutes.Graphics.Add(graphic); } } } RefreshRoutesLayer(); } } catch (Exception) { //TODO - report an error? } } if (requestId == _saveEditsRequestId) { await SetEditMode(false); _saveEditsRequestId = ""; } else if (requestId == _calcualteRoutesRequestId) { _calcualteRoutesRequestId = ""; } RefreshView(); CloseProgressDialog(); }