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();
            }
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 private void RefreshRoutesLayer()
 {
     if (InEditMode)
     {
         if (_customLayerRoutes != null)
         {
             _customLayerRoutes.Refresh();
         }
     }
     else
     {
         FeatureLayer routesFeatureLayer = FindFeatureLayer(_routesDataSource);
         if (routesFeatureLayer != null)
         {
             routesFeatureLayer.Refresh();
         }
     }
 }
Ejemplo n.º 7
0
        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();
        }
Ejemplo n.º 8
0
        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;
            }
        }
Ejemplo n.º 10
0
        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;
        }
Ejemplo n.º 12
0
        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();
        }