SimulatedLocationDataSource Class

  • SimulatedLocationDataSource
  • class Esri::ArcGISRuntime::SimulatedLocationDataSource

    A location data source that provides simulated device locations for testing. More...

    Header: #include <SimulatedLocationDataSource.h>
    Since: Esri::ArcGISRuntime 100.8
    Inherits: Esri::ArcGISRuntime::AbstractLocationDataSource

    Public Functions

    SimulatedLocationDataSource(QObject *parent)
    virtual ~SimulatedLocationDataSource() override
    int currentLocationIndex() const
    double iterationRate() const
    QList<Esri::ArcGISRuntime::Location> locations() const
    void setCurrentLocationIndex(int currentLocationIndex)
    void setIterationRate(double iterationRate)
    void setLocations(const QList<Esri::ArcGISRuntime::Location> &locations)
    void setLocationsWithPolyline(const Esri::ArcGISRuntime::Polyline &polyline)
    void setLocationsWithPolyline(const Esri::ArcGISRuntime::Polyline &polyline, Esri::ArcGISRuntime::SimulationParameters *simulationParameters)

    Protected Slots

    virtual void onStart() override
    virtual void onStop() override

    Detailed Description

    Use this data source to simulate location updates for a device. It uses a collection of Location that are sequentially passed to AbstractLocationDataSource::updateLocation(const Esri::ArcGISRuntime::Location&). The location collection can be derived from vertices in a provided polyline, generated evenly along a polyline based on a travel velocity, or assigned to the collection directly.

    Relevant samples:

    Member Function Documentation

    [explicit] SimulatedLocationDataSource::SimulatedLocationDataSource(QObject *parent)

    Creates a simulated location data source with an optional parent.

    [override virtual] SimulatedLocationDataSource::~SimulatedLocationDataSource()

    Destructor.

    int SimulatedLocationDataSource::currentLocationIndex() const

    The index of the item in the location collection that provides the current location

    You can get this value to find which item in the SimulatedLocationDataSource::locations collection represents the current location. You can also provide a new index to skip to a different location in the collection.

    See also setCurrentLocationIndex().

    double SimulatedLocationDataSource::iterationRate() const

    Returns the rate over which the SimulatedLocationDataSource::locations collection is iterated.

    This controls the frequency of location updates for the simulated location data source. The default value is 1.0, resulting in calls to AbstractLocationDataSource::updateLocation(const Esri::ArcGISRuntime::Location&) every second. To increase the frequency, provide a higher value. A value of 2.0, for example, doubles the frequency of location updates. To slow down updates, provide a lower value. A value of 0.5, for example, decreases location updates by a factor of two. The iteration rate does not affect the Location::timestamp property of the items in the locations (they are always 1 second apart).

    See also setIterationRate().

    QList<Esri::ArcGISRuntime::Location> SimulatedLocationDataSource::locations() const

    Returns a list of location objects.

    As the collection is iterated, the AbstractLocationDataSource::updateLocation(const Esri::ArcGISRuntime::Location&) is fired for each location. The frequency at which AbstractLocationDataSource::updateLocation(const Esri::ArcGISRuntime::Location&) is called is determined by iterationRate. Populate the collection by calling setLocationsWithPolyline(const Esri::ArcGISRuntime::Polyline&) or by directly assigning a collection of Location to this property.

    See also setLocations().

    [override virtual protected slot] void SimulatedLocationDataSource::onStart()

    Reimplements: AbstractLocationDataSource::onStart().

    Reacts to start requests by starting the simulation.

    Note: You should not call this method directly - use start instead.

    [override virtual protected slot] void SimulatedLocationDataSource::onStop()

    Reimplements: AbstractLocationDataSource::onStop().

    Reacts to stop requests by stopping the simulation.

    Note: You should not call this method directly - use stop instead.

    void SimulatedLocationDataSource::setCurrentLocationIndex(int currentLocationIndex)

    Sets the currentLocationIndex to currentLocationIndex.

    See also currentLocationIndex.

    void SimulatedLocationDataSource::setIterationRate(double iterationRate)

    Sets the iterationRate to iterationRate.

    See also iterationRate.

    void SimulatedLocationDataSource::setLocations(const QList<Esri::ArcGISRuntime::Location> &locations)

    Sets the locations to locations.

    See also locations.

    void SimulatedLocationDataSource::setLocationsWithPolyline(const Esri::ArcGISRuntime::Polyline &polyline)

    Creates a collection of locations using vertices from the input polyline.

    The result locations can be obtained from SimulatedLocationDataSource::locations. These properties are populated based on the inputs: Location::timestamp, Location::position, Location::velocity,

    These properties is calculated based on the inputs: Location::course

    These properties are not set: Location::horizontalAccuracy, Location::verticalAccuracy, Location::isLastKnown.

    • polyline - A polyline that defines a simulated travel path.

    void SimulatedLocationDataSource::setLocationsWithPolyline(const Esri::ArcGISRuntime::Polyline &polyline, Esri::ArcGISRuntime::SimulationParameters *simulationParameters)

    Creates a collection of locations along an input polyline based on simulation parameters.

    The generated locations are available from the SimulatedLocationDataSource::locations property. Distance between each location on the polyline is determined by the value of SimulationParameters::velocity. If velocity is 10 meters per second, for example, the distance between locations will be 10 meters. The Location::timestamp values will always be 1 second apart. These location properties will be set based on the following inputs:

    The Location::course property will be calculated based on the inputs. The Location::isLastKnown property will not be set.

    Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.

    You can no longer sign into this site. Go to your ArcGIS portal or the ArcGIS Location Platform dashboard to perform management tasks.

    Your ArcGIS portal

    Create, manage, and access API keys and OAuth 2.0 developer credentials, hosted layers, and data services.

    Your ArcGIS Location Platform dashboard

    Manage billing, monitor service usage, and access additional resources.

    Learn more about these changes in the What's new in Esri Developers June 2024 blog post.

    Close