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); }
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); }
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; }
public Graphic(EsriJsonObject geometry, Dictionary <string, object> attributes) { Attributes = attributes; Geometry = geometry; }