コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }