/// <summary>
        /// Populates the graphics layer using the input feature layer
        /// </summary>
        /// <param name="featureLayer"></param>
        /// <returns></returns>
        private async Task PopulateFeatures(FeatureLayer featureLayer)
        {
            var whereClause = string.Empty;
            var query       =
                new Esri.ArcGISRuntime.Data.QueryParameters()
            {
            };
            var result = await featureLayer.FeatureTable.QueryFeaturesAsync(new QueryParameters()
            {
                WhereClause = "1=1"
            }).ConfigureAwait(false);

            var featureGraphics = new List <Graphic>();

            result.ForEach(p =>
            {
                var point = p.Geometry as MapPoint;
                if (point != null && !point.IsEmpty)
                {
                    var attributes     = new Dictionary <string, object>(p.Attributes);
                    attributes["GUID"] = Guid.NewGuid();
                    attributes["Name"] = "Dispatch " + p.Attributes["FID"].ToString();
                    var graphic        = new CustomGraphic(Convert.ToInt32(p.Attributes["FID"]), p.Geometry, attributes, new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Circle, Color.Red, 8));
                    FeatureGraphicsLayer.Graphics.Add(graphic);
                }
            });
        }
示例#2
0
        private void OnView_Tapped(object sender, Esri.ArcGISRuntime.UI.GeoViewInputEventArgs e)
        {
            MapPoint geoPoint = getGeoPoint(e);

            geoPoint = (MapPoint)GeometryEngine.Project(geoPoint, SpatialReference.Create(3857));
            Polygon buffer = (Polygon)GeometryEngine.Buffer(geoPoint, 1000.0);

            GraphicCollection graphics = (threeD ? bufferAndQuerySceneGraphics : bufferAndQueryMapGraphics).Graphics;

            graphics.Clear();
            graphics.Add(new Graphic(buffer, BUFFER_SYMBOL));
            graphics.Add(new Graphic(geoPoint, CLICK_SYMBOL));

            Esri.ArcGISRuntime.Data.QueryParameters query = new Esri.ArcGISRuntime.Data.QueryParameters();
            query.Geometry = buffer;
            LayerCollection operationalLayers;

            if (threeD)
            {
                operationalLayers = sceneView.Scene.OperationalLayers;
            }
            else
            {
                operationalLayers = mapView.Map.OperationalLayers;
            }
            foreach (Layer layer in operationalLayers)
            {
                ((FeatureLayer)layer).SelectFeaturesAsync(query, SelectionMode.New);
            }
        }
        private async void OnView_Tapped(object sender, Esri.ArcGISRuntime.UI.GeoViewInputEventArgs e)
        {
            MapPoint geoPoint = getGeoPoint(e);

            geoPoint = (MapPoint)GeometryEngine.Project(geoPoint, SpatialReference.Create(3857));
            if (QueryandBufferButton.Content == FindResource("LocationSelected"))
            {
                Polygon           buffer   = (Polygon)GeometryEngine.Buffer(geoPoint, 1000.0);
                GraphicCollection graphics = (threeD ? bufferAndQuerySceneGraphics : bufferAndQueryMapGraphics).Graphics;
                graphics.Clear();
                graphics.Add(new Graphic(buffer, BUFFER_SYMBOL));
                graphics.Add(new Graphic(geoPoint, CLICK_SYMBOL));

                Esri.ArcGISRuntime.Data.QueryParameters query = new Esri.ArcGISRuntime.Data.QueryParameters();
                query.Geometry = buffer;
                LayerCollection operationalLayers;
                if (threeD)
                {
                    operationalLayers = sceneView.Scene.OperationalLayers;
                }
                else
                {
                    operationalLayers = mapView.Map.OperationalLayers;
                }
                foreach (Layer layer in operationalLayers)
                {
                    await((FeatureLayer)layer).SelectFeaturesAsync(query, SelectionMode.New);
                }
            }
            else if (RoutingButton.Content == FindResource("RoutingSelected"))
            {
                GraphicCollection graphics = (threeD ? sceneRouteGraphics : mapRouteGraphics).Graphics;
                if (originPoint == null)
                {
                    originPoint = geoPoint;
                    graphics.Clear();
                    graphics.Add(new Graphic(originPoint, ROUTE_ORIGIN_SYMBOL));
                }
                else
                {
                    graphics.Add(new Graphic(geoPoint, ROUTE_DESTINATION_SYMBOL));

                    if (routeParameters != null)
                    {
                        routeParameters.ReturnDirections = false;
                        routeParameters.ReturnRoutes     = true;
                        routeParameters.ReturnStops      = false;
                    }
                    else
                    {
                        RoutingButton_Click(null, null);
                    }

                    var stop1      = new Stop(originPoint);
                    var stop2      = new Stop(geoPoint);
                    var stopPoints = new List <Stop> {
                        stop1, stop2
                    };
                    routeParameters.SetStops(stopPoints);

                    var routeResult = await routeTask.SolveRouteAsync(routeParameters);

                    // get the route from the results
                    var route = routeResult.Routes[0];

                    // create a graphic (with a dashed line symbol) to represent the route
                    var routeSymbol  = new SimpleLineSymbol(SimpleLineSymbolStyle.Dash, Colors.Yellow, 5);
                    var routeGraphic = new Graphic(route.RouteGeometry, routeSymbol);

                    graphics.Add(routeGraphic);
                    originPoint = null;
                }
            }
        }