private void _ReadGeometry(JsonReader reader, IGeometryBuilder builder, GeometryType type) { switch (type) { case GeometryType.GeometryCollection: case GeometryType.MultiLineString: //case GeometryType.MultiPoint: case GeometryType.MultiPolygon: case GeometryType.Polygon: if (reader.TokenType != JsonToken.StartArray) { throw new JsonReaderException(SR.InvalidGeoJsonLineInfoException); } if (!reader.Read()) { _ThrowGeoJsonException(reader, null); } break; } builder.BeginGeometry(type); switch (type) { case GeometryType.MultiPolygon: do { _ReadGeometry(reader, builder, GeometryType.Polygon); } while ((reader.TokenType != JsonToken.EndArray) && (reader.TokenType != JsonToken.EndObject)); break; default: do { _ReadFigure(reader, builder, type); } while ((reader.TokenType != JsonToken.EndArray) && (reader.TokenType != JsonToken.EndObject)); break; } switch (type) { case GeometryType.GeometryCollection: case GeometryType.MultiLineString: //case GeometryType.MultiPoint: case GeometryType.MultiPolygon: case GeometryType.Polygon: if (reader.TokenType != JsonToken.EndArray) { _ThrowGeoJsonException(reader, JsonToken.EndArray); } if (!reader.Read()) { _ThrowGeoJsonException(reader, null); } break; } builder.EndGeometry(); }
private void _ReadGeometry(JsonReader reader, IGeometryBuilder builder, GeometryType type) { switch (type) { case GeometryType.GeometryCollection: case GeometryType.MultiLineString: //case GeometryType.MultiPoint: case GeometryType.MultiPolygon: case GeometryType.Polygon: if (reader.TokenType!=JsonToken.StartArray) throw new JsonReaderException(SR.InvalidGeoJsonLineInfoException); if (!reader.Read()) _ThrowGeoJsonException(reader, null); break; } builder.BeginGeometry(type); switch (type) { case GeometryType.MultiPolygon: do { _ReadGeometry(reader, builder, GeometryType.Polygon); } while ((reader.TokenType!=JsonToken.EndArray) && (reader.TokenType!=JsonToken.EndObject)); break; default: do { _ReadFigure(reader, builder, type); } while ((reader.TokenType!=JsonToken.EndArray) && (reader.TokenType!=JsonToken.EndObject)); break; } switch (type) { case GeometryType.GeometryCollection: case GeometryType.MultiLineString: //case GeometryType.MultiPoint: case GeometryType.MultiPolygon: case GeometryType.Polygon: if (reader.TokenType!=JsonToken.EndArray) _ThrowGeoJsonException(reader, JsonToken.EndArray); if (!reader.Read()) _ThrowGeoJsonException(reader, null); break; } builder.EndGeometry(); }