Ejemplo n.º 1
0
        private FilterContainer _GeoPolygon(PropertyPathMarker fieldName, string[] points)
        {
            IGeoPolygonFilter filter = new GeoPolygonFilterDescriptor();

            filter.Points = points;
            filter.Field  = fieldName;
            return(this.New(filter, f => f.GeoPolygon = filter));
        }
		public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
		{
			var j = JObject.Load(reader);
			if (j == null || !j.HasValues)
				return null;
			IGeoPolygonFilter filter = new GeoPolygonFilterDescriptor();
			foreach (var jv in j)
			{
				switch (jv.Key)
				{
					case "_cache":
						filter.Cache = jv.Value.Value<bool>();
						break;
					case "_cache_key":
						filter.CacheKey = jv.Value.Value<string>();
						break;
					case "_name":
						filter.FilterName = jv.Value.Value<string>();
						break;
					default:
						filter.Field = jv.Key;
						var points = jv.Value["points"];
						if (points == null)
						{
							filter.Points = Enumerable.Empty<string>();
							break;
						}
						
						var stringValues = points.Values<string>();
						//var doublePairArray = points.Values<double[]>()
						//	.Where(dd=>dd.Count() == 2)
						//	.Select(dd=>"{0}, {1}".F(dd[0], dd[1]));
						//var latLongs = points.Values<LatLon>().Select(ll=>"{0}, {1}".F(ll.Lon, ll.Lat));

						filter.Points = stringValues;
						break;
				}
			}

			return filter;

		}