Expose navigation target to expressions / API for dynamic field navigation
J
James Hosmer
Summary
QField already includes a useful navigation tool that can guide a field worker to a selected feature. However, the navigation target cannot currently be controlled programmatically from expressions or project logic.
For many field workflows, especially ecological surveys, the navigation target needs to be selected dynamically based on spatial context rather than manually choosing a feature.
Providing a way to set the navigation target via expressions or a small API would greatly improve QField’s usefulness for guided survey workflows.
Example Use Case
I am developing a QField system for managing wildlife reserves (UK). We maintain ~160 bird boxes across several reserves.
During a work party, volunteers need to:
Select a reserve
Select a work scope within that reserve
Navigate to the nearest unprocessed bird box
As each box is inspected and marked processed, the system should automatically guide the worker to the next nearest unprocessed box.
Currently this can be implemented partially using expressions (distance, bearing, etc.), but the built-in QField navigation tool cannot be driven by these results.
This results in awkward workflows where the worker must repeatedly select features manually.
Desired Capability
Expose a way for expressions or project logic to control the navigation target.
Examples:
Expression variable
@navigation_target
Expression function
set_navigation_target(geometry)
set_navigation_target(feature)
clear_navigation_target()
Or project-level setting
Allow the navigation target to be defined by an expression such as:
navigation_target = nearest_unprocessed_feature()
Benefits
This would enable QField projects to implement workflows like:
ecological surveys (nearest observation target)
infrastructure inspection (next asset to inspect)
trail or fence inspections
agricultural sampling grids
forestry plot navigation
The navigation UI already exists; exposing the target would simply allow projects to drive it dynamically.
Current Workaround
The current workaround is to implement custom navigation logic using expressions and symbology:
compute nearest feature
compute distance and bearing
display this in the form
render arrows or guidance lines
This works but is much less intuitive than using the built-in navigation tool.
Why this matters
QField is already an excellent field data collection platform. Enabling dynamic navigation targets would allow it to function as a guided survey tool, which is a very common requirement in conservation, agriculture, and infrastructure inspection.
Additional Context
Our system already uses:
QGIS + QField
RTK GNSS positioning
GeoPackage data store
QFieldCloud synchronization
Dynamic navigation would integrate naturally with these workflows.
I would be happy to help test or prototype this functionality if needed.