コード例 #1
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JObject        jsonObject = JObject.Load(reader);
            EsriJsonObject geometry   = default(EsriJsonObject);

            IEnumerable <String> keys = GetKeys(jsonObject);

            if (keys.Contains("points"))
            {
                geometry = new Multipoint();
            }
            else if (keys.Contains("rings"))
            {
                geometry = new Polygon();
            }
            else if (keys.Contains("paths"))
            {
                geometry = new Polyline();
            }
            else if (keys.Contains("x") && keys.Contains("y"))
            {
                geometry = new Point();
            }
            //else
            //{
            //    throw new NotSupportedException("Conversion of this type is not supported");
            //}

            serializer.Populate(jsonObject.CreateReader(), geometry);

            return(geometry);
        }
コード例 #2
0
            protected override ApiResponseContainer <Graphic> Handle(Command request)
            {
                EsriJsonObject geometry   = null;
                var            attributes = new Dictionary <string, object>();
                var            message    = request.Container.Message;
                var            status     = request.Container.Status;
                var            result     = request.Container.Result;

                if (result?.Location != null)
                {
                    geometry = new Point(result.Location.X, result.Location.Y)
                    {
                        CRS = new Crs {
                            WellKnownId = result.Wkid
                        }
                    };

                    attributes = JObject.FromObject(request.Container.Result)
                                 .ToObject <Dictionary <string, object> >();
                }

                if (geometry == null && attributes.Count < 1)
                {
                    return(new ApiResponseContainer <Graphic> {
                        Status = status,
                        Message = message
                    });
                }

                var graphic =
                    new Graphic(geometry,
                                attributes.Where(x => x.Value != null).ToDictionary(x => x.Key, y => y.Value));

                var responseContainer = new ApiResponseContainer <Graphic> {
                    Result  = graphic,
                    Status  = status,
                    Message = message
                };

                return(responseContainer);
            }
コード例 #3
0
        protected override void Execute()
        {
            Dictionary <string, object> attributes;
            string         message;
            int            status;
            EsriJsonObject geometry = null;

            if (Container is ResultContainer <GeocodeAddressResult> container1)
            {
                message = container1.Message;
                status  = container1.Status;

                var result = container1.Result;
                attributes = GetProperties(result);

                if (result.Location != null)
                {
                    geometry = new Point(result.Location.X, result.Location.Y)
                    {
                        CRS = new Crs
                        {
                            WellKnownId = result.Wkid
                        }
                    };
                }
            }
            else if (Container is ResultContainer <RouteMilepostResult> container)
            {
                message = container.Message;
                status  = container.Status;

                var result = container.Result;
                attributes = GetProperties(result);

                if (result.Location != null)
                {
                    geometry = new Point(result.Location.X, result.Location.Y)
                    {
                        CRS = new Crs
                        {
                            WellKnownId = 26912
                        }
                    };
                }
            }
            else
            {
                Result = null;
                return;
            }

            var graphic = new Graphic(geometry, attributes);

            var geoJsonContainer = new ResultContainer <Graphic>
            {
                Result  = graphic,
                Status  = status,
                Message = message
            };

            Result = geoJsonContainer;
        }
コード例 #4
0
 public Graphic(EsriJsonObject geometry, Dictionary <string, object> attributes)
 {
     Attributes = attributes;
     Geometry   = geometry;
 }