IndoorsLocationDataSource Class

  • IndoorsLocationDataSource
  • class Esri::ArcGISRuntime::IndoorsLocationDataSource

    Provides an indoor or outdoor position based on device sensor data (radio, GPS, motion sensors). An IPS (indoor positioning system) position is calculated based on radio data and motion sensors. The GPS position is used as a fallback in case an IPS position can't be calculated, or if the IPS position reports a position outside of a building. More...

    Header: #include <IndoorsLocationDataSource.h>
    Since: Esri::ArcGISRuntime 100.13
    Inherits: Esri::ArcGISRuntime::AbstractLocationDataSource

    Public Functions

    IndoorsLocationDataSource(Esri::ArcGISRuntime::FeatureTable *positioningTable, QObject *parent = nullptr)
    IndoorsLocationDataSource(Esri::ArcGISRuntime::FeatureTable *positioningTable, Esri::ArcGISRuntime::ArcGISFeatureTable *pathwaysTable, QObject *parent = nullptr)
    IndoorsLocationDataSource(Esri::ArcGISRuntime::FeatureTable *positioningTable, Esri::ArcGISRuntime::ArcGISFeatureTable *pathwaysTable, Esri::ArcGISRuntime::ArcGISFeatureTable *levelsTable, const QUuid &positioningId, QObject *parent = nullptr)
    IndoorsLocationDataSource(Esri::ArcGISRuntime::FeatureTable *positioningTable, const QUuid &positioningId, QObject *parent = nullptr)
    IndoorsLocationDataSource(Esri::ArcGISRuntime::FeatureTable *positioningTable, Esri::ArcGISRuntime::ArcGISFeatureTable *pathwaysTable, const QUuid &positioningId, QObject *parent = nullptr)
    IndoorsLocationDataSource(Esri::ArcGISRuntime::IndoorPositioningDefinition *definition, QObject *parent = nullptr)
    virtual ~IndoorsLocationDataSource() override
    Esri::ArcGISRuntime::IndoorsLocationDataSourceConfiguration *configuration() const
    Esri::ArcGISRuntime::ArcGISFeatureTable *levelsTable() const
    Esri::ArcGISRuntime::ArcGISFeatureTable *pathwaysTable() const
    QUuid positioningId() const
    Esri::ArcGISRuntime::FeatureTable *positioningTable() const
    void setConfiguration(Esri::ArcGISRuntime::IndoorsLocationDataSourceConfiguration *configuration)
    Esri::ArcGISRuntime::Error warning() const

    Signals

    void messageReceived(Esri::ArcGISRuntime::IpsInfoMessage *ipsInfoMsg)
    void warningChanged(const Esri::ArcGISRuntime::Error &warning)

    Protected Slots

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

    Detailed Description

    Note: IndoorsLocationDataSource is only supported on Android and iOS. The data source will fail to start on other platforms with an error.

    On iOS, IndoorsLocationDataSource requires the Qt bluetooth plugin. It must be added to apps via the following for qmake:

    QT += bluetooth

    or the following for CMake:

    find_package(Qt6 COMPONENTS REQUIRED Bluetooth)

    IndoorsLocationDataSource requires both bluetooth and location permissions to operate.

    Relevant samples:

    Member Function Documentation

    [explicit] IndoorsLocationDataSource::IndoorsLocationDataSource(Esri::ArcGISRuntime::FeatureTable *positioningTable, QObject *parent = nullptr)

    Create a new IndoorsLocationDataSource from the given feature table. The IndoorsLocationDataSource will try to determine the latest row in the table and use that to set up IPS.

    • positioningTable - The "ips_positioning" feature table from an IPS-aware map. Setting this property enables path snapping of locations provided by the IndoorsLocationDataSource.
    • parent - The optional parent QObject.

    IndoorsLocationDataSource::IndoorsLocationDataSource(Esri::ArcGISRuntime::FeatureTable *positioningTable, Esri::ArcGISRuntime::ArcGISFeatureTable *pathwaysTable, QObject *parent = nullptr)

    Create a new IndoorsLocationDataSource from the given feature table. The IndoorsLocationDataSource will try to determine the latest row in the table and use that to set up IPS.

    • positioningTable - The "ips_positioning" feature table from an IPS-aware map.
    • pathwaysTable - An ArcGISFeatureTable that contains pathways as per the ArcGIS Indoors Information Model. Setting this property enables path snapping of locations provided by the IndoorsLocationDataSource.
    • parent - The optional parent QObject.

    For more information about the ArcGIS Indoors Information Model see https://pro.arcgis.com/en/pro-app/latest/help/data/indoors/arcgis-indoors-information-model.htm#ESRI_SECTION2_72E0DE4BBEFA435485E2D10CB16D2BE6.

    [since Esri::ArcGISRuntime 200.1] IndoorsLocationDataSource::IndoorsLocationDataSource(Esri::ArcGISRuntime::FeatureTable *positioningTable, Esri::ArcGISRuntime::ArcGISFeatureTable *pathwaysTable, Esri::ArcGISRuntime::ArcGISFeatureTable *levelsTable, const QUuid &positioningId, QObject *parent = nullptr)

    Create a new IndoorsLocationDataSource.

    • positioningTable - The "ips_positioning" feature table from an IPS-aware map.
    • pathwaysTable - An ArcGISFeatureTable that contains pathways in accordance with the ArcGIS Indoors Information Model. Setting this property enables path snapping of locations provided by the IndoorsLocationDataSource.
    • levelsTable - An ArcGISFeatureTable that contains floor levels in accordance with the ArcGIS Indoors Information Model. Providing this table enables the retrieval of a location's floor level ID.
    • positioningId - An ID that identifies a specific row in the FeatureTable to use for setting up IPS. If it is empty, the entry in positioningTable with the most recent date is used.
    • parent - The optional parent QObject.

    For more information about the ArcGIS Indoors Information Model see the ArcGIS Pro documentation.

    Floor level ID can be obtained from Location::additionalSourceProperties of a Location emitted by the IndoorsLocationDataSource.

    For more information about the levels table and ArcGIS Indoors Information Model see the ArcGIS Pro documentation.

    This function was introduced in Esri::ArcGISRuntime 200.1.

    IndoorsLocationDataSource::IndoorsLocationDataSource(Esri::ArcGISRuntime::FeatureTable *positioningTable, const QUuid &positioningId, QObject *parent = nullptr)

    Create a new IndoorsLocationDataSource from the given feature table and row in the FeatureTable.

    • positioningTable - The "ips_positioning" feature table from an IPS-aware map.
    • positioningId - An ID which identifies a specific row in the FeatureTable that should be used for setting up IPS.
    • parent - The optional parent QObject.

    IndoorsLocationDataSource::IndoorsLocationDataSource(Esri::ArcGISRuntime::FeatureTable *positioningTable, Esri::ArcGISRuntime::ArcGISFeatureTable *pathwaysTable, const QUuid &positioningId, QObject *parent = nullptr)

    Create a new IndoorsLocationDataSource from the given feature table and row in the FeatureTable.

    • positioningTable - The "ips_positioning" feature table from an IPS-aware map.
    • pathwaysTable - An ArcGISFeatureTable that contains pathways as per the ArcGIS Indoors Information Model. Setting this property enables path snapping of locations provided by the IndoorsLocationDataSource.
    • positioningId - An ID which identifies a specific row in the FeatureTable that should be used for setting up IPS. If it is empty, the entry in positioningTable with the most recent date is used.
    • parent - The optional parent QObject.

    For more information about the ArcGIS Indoors Information Model see https://pro.arcgis.com/en/pro-app/latest/help/data/indoors/arcgis-indoors-information-model.htm#ESRI_SECTION2_72E0DE4BBEFA435485E2D10CB16D2BE6.

    [explicit, since Esri::ArcGISRuntime 200.4] IndoorsLocationDataSource::IndoorsLocationDataSource(Esri::ArcGISRuntime::IndoorPositioningDefinition *definition, QObject *parent = nullptr)

    Creates a new IndoorsLocationDataSource object using the information contained in the provided IndoorPositioningDefinition.

    For a map to be IPS-aware, one of the following must be true:

    • A reference to an indoor positioning data service is defined in the web map properties.
    • It contains an "ips_positioning" feature table.

    If a map is IPS-aware, an IndoorPositioningDefinition can be returned using Map::indoorPositioningDefinition.

    Use IndoorsLocationDataSource(Esri::ArcGISRuntime::FeatureTable*, Esri::ArcGISRuntime::ArcGISFeatureTable*, QObject*) to create an IndoorsLocationDataSource if an IPS positioning feature table is not a part of a map.

    If IndoorPositioningDefinition is not loaded when IndoorsLocationDataSource starts, then IndoorPositioningDefinition will perform loading during the starting phase which, can lead to a significant delay before IndoorsLocationDataSource is started. To prevent such a delay, manually load IndoorPositioningDefinition before starting IndoorsLocationDataSource.

    This function was introduced in Esri::ArcGISRuntime 200.4.

    [override virtual] IndoorsLocationDataSource::~IndoorsLocationDataSource()

    Destructor.

    [since Esri::ArcGISRuntime 200.4] Esri::ArcGISRuntime::IndoorsLocationDataSourceConfiguration *IndoorsLocationDataSource::configuration() const

    Returns configuration settings for this IndoorsLocationDataSource.

    The configuration is used during the start of IndoorsLocationDataSource (except for IndoorsLocationDataSourceConfiguration::areInfoMessagesEnabled). For changes to the configuration to take effect, you must stop the data source before making changes and then restart with the updated configuration.

    This function was introduced in Esri::ArcGISRuntime 200.4.

    See also setConfiguration().

    [since Esri::ArcGISRuntime 200.1] Esri::ArcGISRuntime::ArcGISFeatureTable *IndoorsLocationDataSource::levelsTable() const

    Returns an ArcGISFeatureTable that contains levels in accordance with the ArcGIS Indoors Information Model. Providing this table enables the retrieval of the location floor level ID.

    Floor level ID can be obtained from Location::additionalSourceProperties of a Location emitted by the IndoorsLocationDataSource. For more information about the levels table and ArcGIS Indoors Information Model see the ArcGIS Pro documentation.

    This function was introduced in Esri::ArcGISRuntime 200.1.

    [signal, since Esri::ArcGISRuntime 200.5] void IndoorsLocationDataSource::messageReceived(Esri::ArcGISRuntime::IpsInfoMessage *ipsInfoMsg)

    Signal emitted when there is a new IpsInfoMessage. If areInfoMessagesEnabled is set to true, Esri::ArcGISRuntime::IndoorsLocationDataSource sends additional messages that are otherwise not forwarded to the user. These messages may be useful for diagnosing issues and troubleshooting. Enabling this setting is meant for debugging purposes and might negatively affect performance.

    • ipsInfoMsg - the new info message.

    Note: We recommend using RAII techniques to ensure IpsInfoMessage is deleted after you are done with it.

    This function was introduced in Esri::ArcGISRuntime 200.5.

    See also Esri::ArcGISRuntime::IndoorsLocationDataSourceConfiguration::areInfoMessagesEnabled.

    [override virtual protected slot] void IndoorsLocationDataSource::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 IndoorsLocationDataSource::onStop()

    Reimplements: AbstractLocationDataSource::onStop().

    Reacts to stop requests by stopping the simulation.

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

    Esri::ArcGISRuntime::ArcGISFeatureTable *IndoorsLocationDataSource::pathwaysTable() const

    Returns a ArcGISFeatureTable that contains pathways as per the ArcGIS Indoors Information Model. Setting this property enables path snapping of locations provided by the IndoorsLocationDataSource. For more information about the ArcGIS Indoors Information Model see https://pro.arcgis.com/en/pro-app/latest/help/data/indoors/arcgis-indoors-information-model.htm#ESRI_SECTION2_72E0DE4BBEFA435485E2D10CB16D2BE6.

    QUuid IndoorsLocationDataSource::positioningId() const

    Returns an ID that identifies a specific row in the FeatureTable to use for setting up IPS. If it is empty, the entry in positioningTable with the most recent date is used.

    Esri::ArcGISRuntime::FeatureTable *IndoorsLocationDataSource::positioningTable() const

    Returns the "ips_positioning" feature table from an IPS-aware map.

    [since Esri::ArcGISRuntime 200.4] void IndoorsLocationDataSource::setConfiguration(Esri::ArcGISRuntime::IndoorsLocationDataSourceConfiguration *configuration)

    Sets the configuration to configuration.

    This function was introduced in Esri::ArcGISRuntime 200.4.

    See also configuration() and IndoorsLocationDataSourceConfiguration.

    [since Esri::ArcGISRuntime 100.14] Esri::ArcGISRuntime::Error IndoorsLocationDataSource::warning() const

    Returns an error that describes a problem encountered while starting or running the AbstractLocationDataSource. This property is used to notify user about transient, non-terminal errors, which occur in IndoorsLocationDataSource. Such errors can influence accuracy of the final positioning. Information stored inside reported error contains useful information about its origin. Unlike AbstractLocationDataSource error it does not require IndoorsLocationDataSource to be restarted.

    This function was introduced in Esri::ArcGISRuntime 100.14.

    [signal, since Esri::ArcGISRuntime 100.14] void IndoorsLocationDataSource::warningChanged(const Esri::ArcGISRuntime::Error &warning)

    Signal emitted when the warning property changed.

    • warning - the new non-terminal error, or an empty error if a previous warning condition was cleared and is no longer applicable.

    This function was introduced in Esri::ArcGISRuntime 100.14.

    See also warning.

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