Geo Bounds Aggregation Usageedit

a => a
.GeoBounds("viewport", gb => gb
    .Field(p => p.Location)
    .WrapLongitude(true)
)
new GeoBoundsAggregation("viewport", Field<Project>(p => p.Location))
{
    WrapLongitude = true
}

Example json output. 

{
  "viewport": {
    "geo_bounds": {
      "field": "location",
      "wrap_longitude": true
    }
  }
}

Handling Responsesedit

response.ShouldBeValid();
var viewport = response.Aggregations.GeoBounds("viewport");
viewport.Should().NotBeNull();
viewport.Bounds.Should().NotBeNull();

var bottomRight = viewport.Bounds.BottomRight;
bottomRight.Should().NotBeNull();
bottomRight.Lat.Should().HaveValue();
GeoLocation.IsValidLatitude(bottomRight.Lat.Value).Should().BeTrue();
bottomRight.Lon.Should().HaveValue();
GeoLocation.IsValidLongitude(bottomRight.Lon.Value).Should().BeTrue();

var topLeft = viewport.Bounds.TopLeft;
topLeft.Should().NotBeNull();
topLeft.Lat.Should().HaveValue();
GeoLocation.IsValidLatitude(topLeft.Lat.Value).Should().BeTrue();
topLeft.Lon.Should().HaveValue();
GeoLocation.IsValidLongitude(topLeft.Lon.Value).Should().BeTrue();