/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace LocationService { namespace Model { /** *

Contains the geofence geometry details.

A geofence geometry is made up * of either a polygon or a circle. Can be either a polygon or a circle. Including * both will return a validation error.

Amazon Location doesn't * currently support polygons with holes, multipolygons, polygons that are wound * clockwise, or that cross the antimeridian.

See Also:

* AWS * API Reference

*/ class GeofenceGeometry { public: AWS_LOCATIONSERVICE_API GeofenceGeometry(); AWS_LOCATIONSERVICE_API GeofenceGeometry(Aws::Utils::Json::JsonView jsonValue); AWS_LOCATIONSERVICE_API GeofenceGeometry& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_LOCATIONSERVICE_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

A circle on the earth, as defined by a center point and a radius.

*/ inline const Circle& GetCircle() const{ return m_circle; } /** *

A circle on the earth, as defined by a center point and a radius.

*/ inline bool CircleHasBeenSet() const { return m_circleHasBeenSet; } /** *

A circle on the earth, as defined by a center point and a radius.

*/ inline void SetCircle(const Circle& value) { m_circleHasBeenSet = true; m_circle = value; } /** *

A circle on the earth, as defined by a center point and a radius.

*/ inline void SetCircle(Circle&& value) { m_circleHasBeenSet = true; m_circle = std::move(value); } /** *

A circle on the earth, as defined by a center point and a radius.

*/ inline GeofenceGeometry& WithCircle(const Circle& value) { SetCircle(value); return *this;} /** *

A circle on the earth, as defined by a center point and a radius.

*/ inline GeofenceGeometry& WithCircle(Circle&& value) { SetCircle(std::move(value)); return *this;} /** *

A polygon is a list of linear rings which are each made up of a list of * vertices.

Each vertex is a 2-dimensional point of the form: * [longitude, latitude]. This is represented as an array of doubles * of length 2 (so [double, double]).

An array of 4 or more * vertices, where the first and last vertex are the same (to form a closed * boundary), is called a linear ring. The linear ring vertices must be listed in * counter-clockwise order around the ring’s interior. The linear ring is * represented as an array of vertices, or an array of arrays of doubles * ([[double, double], ...]).

A geofence consists of a single * linear ring. To allow for future expansion, the Polygon parameter takes an array * of linear rings, which is represented as an array of arrays of arrays of doubles * ([[[double, double], ...], ...]).

A linear ring for use in * geofences can consist of between 4 and 1,000 vertices.

*/ inline const Aws::Vector>>& GetPolygon() const{ return m_polygon; } /** *

A polygon is a list of linear rings which are each made up of a list of * vertices.

Each vertex is a 2-dimensional point of the form: * [longitude, latitude]. This is represented as an array of doubles * of length 2 (so [double, double]).

An array of 4 or more * vertices, where the first and last vertex are the same (to form a closed * boundary), is called a linear ring. The linear ring vertices must be listed in * counter-clockwise order around the ring’s interior. The linear ring is * represented as an array of vertices, or an array of arrays of doubles * ([[double, double], ...]).

A geofence consists of a single * linear ring. To allow for future expansion, the Polygon parameter takes an array * of linear rings, which is represented as an array of arrays of arrays of doubles * ([[[double, double], ...], ...]).

A linear ring for use in * geofences can consist of between 4 and 1,000 vertices.

*/ inline bool PolygonHasBeenSet() const { return m_polygonHasBeenSet; } /** *

A polygon is a list of linear rings which are each made up of a list of * vertices.

Each vertex is a 2-dimensional point of the form: * [longitude, latitude]. This is represented as an array of doubles * of length 2 (so [double, double]).

An array of 4 or more * vertices, where the first and last vertex are the same (to form a closed * boundary), is called a linear ring. The linear ring vertices must be listed in * counter-clockwise order around the ring’s interior. The linear ring is * represented as an array of vertices, or an array of arrays of doubles * ([[double, double], ...]).

A geofence consists of a single * linear ring. To allow for future expansion, the Polygon parameter takes an array * of linear rings, which is represented as an array of arrays of arrays of doubles * ([[[double, double], ...], ...]).

A linear ring for use in * geofences can consist of between 4 and 1,000 vertices.

*/ inline void SetPolygon(const Aws::Vector>>& value) { m_polygonHasBeenSet = true; m_polygon = value; } /** *

A polygon is a list of linear rings which are each made up of a list of * vertices.

Each vertex is a 2-dimensional point of the form: * [longitude, latitude]. This is represented as an array of doubles * of length 2 (so [double, double]).

An array of 4 or more * vertices, where the first and last vertex are the same (to form a closed * boundary), is called a linear ring. The linear ring vertices must be listed in * counter-clockwise order around the ring’s interior. The linear ring is * represented as an array of vertices, or an array of arrays of doubles * ([[double, double], ...]).

A geofence consists of a single * linear ring. To allow for future expansion, the Polygon parameter takes an array * of linear rings, which is represented as an array of arrays of arrays of doubles * ([[[double, double], ...], ...]).

A linear ring for use in * geofences can consist of between 4 and 1,000 vertices.

*/ inline void SetPolygon(Aws::Vector>>&& value) { m_polygonHasBeenSet = true; m_polygon = std::move(value); } /** *

A polygon is a list of linear rings which are each made up of a list of * vertices.

Each vertex is a 2-dimensional point of the form: * [longitude, latitude]. This is represented as an array of doubles * of length 2 (so [double, double]).

An array of 4 or more * vertices, where the first and last vertex are the same (to form a closed * boundary), is called a linear ring. The linear ring vertices must be listed in * counter-clockwise order around the ring’s interior. The linear ring is * represented as an array of vertices, or an array of arrays of doubles * ([[double, double], ...]).

A geofence consists of a single * linear ring. To allow for future expansion, the Polygon parameter takes an array * of linear rings, which is represented as an array of arrays of arrays of doubles * ([[[double, double], ...], ...]).

A linear ring for use in * geofences can consist of between 4 and 1,000 vertices.

*/ inline GeofenceGeometry& WithPolygon(const Aws::Vector>>& value) { SetPolygon(value); return *this;} /** *

A polygon is a list of linear rings which are each made up of a list of * vertices.

Each vertex is a 2-dimensional point of the form: * [longitude, latitude]. This is represented as an array of doubles * of length 2 (so [double, double]).

An array of 4 or more * vertices, where the first and last vertex are the same (to form a closed * boundary), is called a linear ring. The linear ring vertices must be listed in * counter-clockwise order around the ring’s interior. The linear ring is * represented as an array of vertices, or an array of arrays of doubles * ([[double, double], ...]).

A geofence consists of a single * linear ring. To allow for future expansion, the Polygon parameter takes an array * of linear rings, which is represented as an array of arrays of arrays of doubles * ([[[double, double], ...], ...]).

A linear ring for use in * geofences can consist of between 4 and 1,000 vertices.

*/ inline GeofenceGeometry& WithPolygon(Aws::Vector>>&& value) { SetPolygon(std::move(value)); return *this;} /** *

A polygon is a list of linear rings which are each made up of a list of * vertices.

Each vertex is a 2-dimensional point of the form: * [longitude, latitude]. This is represented as an array of doubles * of length 2 (so [double, double]).

An array of 4 or more * vertices, where the first and last vertex are the same (to form a closed * boundary), is called a linear ring. The linear ring vertices must be listed in * counter-clockwise order around the ring’s interior. The linear ring is * represented as an array of vertices, or an array of arrays of doubles * ([[double, double], ...]).

A geofence consists of a single * linear ring. To allow for future expansion, the Polygon parameter takes an array * of linear rings, which is represented as an array of arrays of arrays of doubles * ([[[double, double], ...], ...]).

A linear ring for use in * geofences can consist of between 4 and 1,000 vertices.

*/ inline GeofenceGeometry& AddPolygon(const Aws::Vector>& value) { m_polygonHasBeenSet = true; m_polygon.push_back(value); return *this; } /** *

A polygon is a list of linear rings which are each made up of a list of * vertices.

Each vertex is a 2-dimensional point of the form: * [longitude, latitude]. This is represented as an array of doubles * of length 2 (so [double, double]).

An array of 4 or more * vertices, where the first and last vertex are the same (to form a closed * boundary), is called a linear ring. The linear ring vertices must be listed in * counter-clockwise order around the ring’s interior. The linear ring is * represented as an array of vertices, or an array of arrays of doubles * ([[double, double], ...]).

A geofence consists of a single * linear ring. To allow for future expansion, the Polygon parameter takes an array * of linear rings, which is represented as an array of arrays of arrays of doubles * ([[[double, double], ...], ...]).

A linear ring for use in * geofences can consist of between 4 and 1,000 vertices.

*/ inline GeofenceGeometry& AddPolygon(Aws::Vector>&& value) { m_polygonHasBeenSet = true; m_polygon.push_back(std::move(value)); return *this; } private: Circle m_circle; bool m_circleHasBeenSet = false; Aws::Vector>> m_polygon; bool m_polygonHasBeenSet = false; }; } // namespace Model } // namespace LocationService } // namespace Aws