Geo Bounds Aggregation Usage

edit

Fluent DSL example

edit
a => a
.GeoBounds("viewport", gb => gb
    .Field(p => p.LocationPoint)
    .WrapLongitude(true)
)

Object Initializer syntax example

edit
new GeoBoundsAggregation("viewport", Field<Project>(p => p.LocationPoint))
{
    WrapLongitude = true
}

Example json output.

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

Handling Responses

edit
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();