/* Copyright 2010-present MongoDB Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; using MongoDB.Driver.GeoJsonObjectModel.Serializers; namespace MongoDB.Driver.GeoJsonObjectModel { /// /// Represents a GeoJson Feature object. /// /// The type of the coordinates. [BsonSerializer(typeof(GeoJsonFeatureSerializer<>))] public class GeoJsonFeature : GeoJsonObject where TCoordinates : GeoJsonCoordinates { // private fields private GeoJsonGeometry _geometry; private BsonValue _id; private BsonDocument _properties; // constructors /// /// Initializes a new instance of the class. /// /// The geometry. public GeoJsonFeature(GeoJsonGeometry geometry) : this(null, geometry) { } /// /// Initializes a new instance of the class. /// /// The additional args. /// The geometry. public GeoJsonFeature(GeoJsonFeatureArgs args, GeoJsonGeometry geometry) : base(args) { _geometry = geometry; if (args != null) { _id = args.Id; _properties = args.Properties; } } // public properties /// /// Gets the geometry. /// public GeoJsonGeometry Geometry { get { return _geometry; } } /// /// Gets the id. /// public BsonValue Id { get { return _id; } } /// /// Gets the properties. /// public BsonDocument Properties { get { return _properties; } } /// /// Gets the type of the GeoJson object. /// public override GeoJsonObjectType Type { get { return GeoJsonObjectType.Feature; } } } }