Class LocationGeotriggerFeed
- java.lang.Object
-
- com.esri.arcgisruntime.geotriggers.GeotriggerFeed
-
- com.esri.arcgisruntime.geotriggers.LocationGeotriggerFeed
-
public final class LocationGeotriggerFeed extends GeotriggerFeed
Feed data for aGeotrigger
created from aLocationDataSource
.The
GeotriggerFeed
is the dynamic component of aGeotrigger
. Typically, it is the data that moves around and triggers the condition. For example, if the condition is "notify me when my position comes within 50 meters of one of my target areas", the feed data is "my position".To receive location updates, the
LocationDataSource
must beLocationDataSource.isStarted()
. If you callGeotriggerMonitor.stop()
, the underlyingLocationDataSource
will not be stopped for you. For example, it may continue to receive GPS readings.If the LocationGeotriggerFeed is from a
Geotrigger
defined in aGeotriggersInfo
, you must supply aLocationDataSource
to provide the device location. Set thegetLocationDataSource()
to yourLocationDataSource
- for example, using theLocationDisplay.setLocationDataSource(LocationDataSource)
.A
FenceGeotrigger
can also take into account floors within buildings. If the feature table used to create theFeatureFenceParameters
is referenced by aFeatureLayer
that isFloorAware
, and theLocationDataSource
used to create theGeotriggerFeed
includesLocationDataSource.Location.KEY_FLOOR
information, then fences will only be entered when they are intersected by aLocationDataSource.Location
on the correct floor. If the fence or location data does not include valid floor information, the floor is ignored and the fence is entered when it is intersected by the location.A floor aware feature layer or table must be part of a
GeoModel
that includes a validGeoModelFloorDefinition
. All layers and tables that are used by the floor definition are loaded when theGeotriggerMonitor
is started.A
Location
can contain floor property as part ofLocationDataSource.Location.getAdditionalSourceProperties()
. This can be supplied as part of your own implementation.- Since:
- 100.12.0
-
-
Constructor Summary
Constructors Constructor Description LocationGeotriggerFeed()
Constructs an empty LocationGeotriggerFeed.LocationGeotriggerFeed(LocationDataSource locationDataSource)
Constructs a LocationGeotriggerFeed with aLocationDataSource
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ArcadeExpression
getFilter()
Gets anArcadeExpression
that controls whether an update from the LocationGeotriggerFeed is sent to aGeotriggerMonitor
.LocationDataSource
getLocationDataSource()
Gets the location data source that provides updates for the device location.void
setFilter(ArcadeExpression filter)
Sets anArcadeExpression
that controls whether an update from the LocationGeotriggerFeed is sent to aGeotriggerMonitor
.void
setLocationDataSource(LocationDataSource locationDataSource)
Sets the location data source that provides updates for the device location.
-
-
-
Constructor Detail
-
LocationGeotriggerFeed
public LocationGeotriggerFeed()
Constructs an empty LocationGeotriggerFeed.- Since:
- 100.12.0
-
LocationGeotriggerFeed
public LocationGeotriggerFeed(LocationDataSource locationDataSource)
Constructs a LocationGeotriggerFeed with aLocationDataSource
.- Parameters:
locationDataSource
- a location data source that provides updates for the device location- Throws:
IllegalArgumentException
- if locationDataSource is null- Since:
- 100.12.0
-
-
Method Detail
-
getFilter
public ArcadeExpression getFilter()
Gets anArcadeExpression
that controls whether an update from the LocationGeotriggerFeed is sent to aGeotriggerMonitor
.The expression uses the Arcade language to determine whether feed entity updates are suitable for monitoring. The
ArcadeExpression
must evaluate to a boolean where:- True indicates that the update will be used.
- False indicates that the update will not be used.
GeotriggerMonitor
. For example, you could filter out GPS updates where the horizontal accuracy is poor, to avoid false enter and exit notifications.With a LocationGeotriggerFeed, the expression inspects a new
LocationDataSource.Location
object and returns true if it is suitable and false if not. Typically, your expression excludesLocation
objects where theLocationDataSource.Location.getHorizontalAccuracy()
does not meet your criteria - but it could also consider other properties such asLocationDataSource.Location.getVelocity()
andLocationDataSource.Location.getCourse()
.Arcade gives you access to the properties of the feed entity with the
$locationupdate
profile variable. This represents a newLocation
received from your device GPS. For example, anArcadeExpression
with the following string rejectsLocation
updates with a horizontal accuracy greater than 10 meters:return $locationupdate.horizontalaccuracy <= 10;
.- Returns:
- an
ArcadeExpression
that controls whether an update from the LocationGeotriggerFeed is sent to aGeotriggerMonitor
, or null if none - Since:
- 100.13.0
- See Also:
setFilter(ArcadeExpression)
-
setFilter
public void setFilter(ArcadeExpression filter)
Sets anArcadeExpression
that controls whether an update from the LocationGeotriggerFeed is sent to aGeotriggerMonitor
.The expression uses the Arcade language to determine whether feed entity updates are suitable for monitoring. The
ArcadeExpression
must evaluate to a boolean where:- True indicates that the update will be used.
- False indicates that the update will not be used.
GeotriggerMonitor
. For example, you could filter out GPS updates where the horizontal accuracy is poor, to avoid false enter and exit notifications.With a LocationGeotriggerFeed, the expression inspects a new
LocationDataSource.Location
object and returns true if it is suitable and false if not. Typically, your expression excludesLocation
objects where theLocationDataSource.Location.getHorizontalAccuracy()
does not meet your criteria — but it could also consider other properties such asLocationDataSource.Location.getVelocity()
andLocationDataSource.Location.getCourse()
.Arcade gives you access to the properties of the feed entity with the
$locationupdate
profile variable. This represents a newLocation
received from your device GPS. For example, anArcadeExpression
with the following string rejectsLocation
updates with a horizontal accuracy greater than 10 meters:return $locationupdate.horizontalaccuracy <= 10;
.- Parameters:
filter
- anArcadeExpression
that controls whether an update from the LocationGeotriggerFeed is sent to aGeotriggerMonitor
- Since:
- 100.13.0
- See Also:
getFilter()
-
getLocationDataSource
public LocationDataSource getLocationDataSource()
Gets the location data source that provides updates for the device location.To receive location updates, the
LocationDataSource
must beLocationDataSource.isStarted()
. If you callGeotriggerMonitor.stop()
, the underlyingLocationDataSource
is not stopped for you. In other words, it may continue to receive GPS readings.- Returns:
- the location data source that provides updates for the device location, or null if none
- Since:
- 100.12.0
-
setLocationDataSource
public void setLocationDataSource(LocationDataSource locationDataSource)
Sets the location data source that provides updates for the device location.To receive location updates, the
LocationDataSource
must beLocationDataSource.isStarted()
. If you callGeotriggerMonitor.stop()
, the underlyingLocationDataSource
is not stopped for you. In other words, it may continue to receive GPS readings.- Parameters:
locationDataSource
- the location data source that provides updates for the device location- Since:
- 100.12.0
-
-