private void _ReadFigure(JsonReader reader, IGeometryBuilder builder, GeometryType type) { if (type != GeometryType.Point) { if (reader.TokenType != JsonToken.StartArray) { _ThrowGeoJsonException(reader, JsonToken.StartArray); } if (!reader.Read() || (reader.TokenType != JsonToken.StartArray)) { _ThrowGeoJsonException(reader, JsonToken.StartArray); } } bool first = true; do { if (!reader.Read()) { _ThrowGeoJsonException(reader, null); } var p = _ReadPoint(reader); if (first) { builder.BeginFigure(p.X, p.Y, p.Z); first = false; } else { builder.AddLine(p.X, p.Y, p.Z); } } while (reader.TokenType == JsonToken.StartArray); if (type != GeometryType.Point) { if (reader.TokenType != JsonToken.EndArray) { _ThrowGeoJsonException(reader, JsonToken.EndArray); } if (!reader.Read()) { _ThrowGeoJsonException(reader, null); } } builder.EndFigure(); }
private void _ReadFigure(JsonReader reader, IGeometryBuilder builder, GeometryType type) { if (type!=GeometryType.Point) { if (reader.TokenType!=JsonToken.StartArray) _ThrowGeoJsonException(reader, JsonToken.StartArray); if (!reader.Read() || (reader.TokenType!=JsonToken.StartArray)) _ThrowGeoJsonException(reader, JsonToken.StartArray); } bool first=true; do { if (!reader.Read()) _ThrowGeoJsonException(reader, null); var p=_ReadPoint(reader); if (first) { builder.BeginFigure(p.X, p.Y, p.Z); first=false; } else builder.AddLine(p.X, p.Y, p.Z); } while (reader.TokenType==JsonToken.StartArray); if (type!=GeometryType.Point) { if (reader.TokenType!=JsonToken.EndArray) _ThrowGeoJsonException(reader, JsonToken.EndArray); if (!reader.Read()) _ThrowGeoJsonException(reader, null); } builder.EndFigure(); }