📍Geolocation
🧋 Bubble.io Plugin
[Element] Natively - Location
Natively - Location element contains Foreground & Background location services:
📍 Foreground Location Tracking
Events:
Location received - User's location longitude & latitude values updated.
Location failed - called whenever Location service was not able to get user's location (check Latest location request status for more details)
Location Permission Received - called whenever Get location permission return a result
v2.13.4 - Location Background Service Status Received - called afrer Get background location service status
States:
Latest location longitude - Longitude as number
Latest location latitude - Latitude as number
Latest location response status - Status of the latest geolocation request call.
SUCCESS - Got a location and desired accuracy level was achieved successfully.
TIMEOUT - Got a location, but the desired accuracy level was not reached before timeout.
FAILED - An error occurred while using the system location services.
Location permission
IN_USE - foreground allowed
ALWAYS - background allowed
DENIED - not determined or denied
v2.13.4 -BG Location Is Running - yes/no (will be changed on Stop/Start Background Location or Get background location service status)
Actions:
Get current location
minAccuracy [iOS] - Radius in meters. All other values will be filtered!
accuractType [iOS] - Affects on location accuracy and battery life. BestForNavigation,Best,NearestTenMeters,HundredMeters,Kilometer,ThreeKilometers. More details here
Priority [Android] - "BALANCED" (To save battery, recommended) & "HIGH"
Open Settings - If enabled and user's Location permission is denied, will display a pop-up with the option to open the app settings and turn on permission. - v2.18.0
Start foreground location service - start fetching device location
minAccuracy [iOS] - Radius in meters. All other values will be filtered!
accuractType [iOS] - Affects on location accuracy and battery life. BestForNavigation,Best,NearestTenMeters,HundredMeters,Kilometer,ThreeKilometers. More details here
Priority [Android] - "BALANCED" (To save battery, recommended) & "HIGH"
Fetching Interval - Determines how often the location will be fetched. Interval in milliseconds. 5000ms -> 5s
Open Settings - If enabled and user's Location permission is denied, will display a pop-up with the option to open the app settings and turn on permission. - v2.18.0
Stop foreground location service - stop fetching device location
Get location permission - request location permission status update
v2.13.4 -Get background location service status - check if BG Location Service already running
🚙 Background location tracking - v2.1.0
States:
Latest location response status - Status of the latest background location service start/stop.
SUCCESS - Background location started/stopped successfully
FAILED - Background location started/stopped with an error.
Events:
Location background failed - Whenever starting of background service will fail
Location background success - Whenever starting of background service will succeed
Actions:
Start background location service - start fetching device location
minAccuracy [iOS] - Radius in meters. All other values will be filtered!
accuractType [iOS] - Affects on location accuracy and battery life. BestForNavigation,Best,NearestTenMeters,HundredMeters,Kilometer,ThreeKilometers. More details here
Priority [Android] - "BALANCED" (To save battery, recommended) & "HIGH"
Fetching Interval - Determines how often the location will be fetched. Interval in milliseconds. 5000ms -> 5s
Response Identifier - Identifier that will be sent with a user's location (We're recommending using the user's unique id)
Open Settings - If enabled and user's Location permission is denied, will display a pop-up with the option to open the app settings and turn on permission. - v2.18.0
Stop background location service - stop fetching device location
Background geolocation can be automatically stopped in such cases: If the user or system closes the app, or if the device receives more than 3 errors in response from your endpoint.
Foreground location services and Background location services should not be run concurrently within the same user session. If both are active, the system's behavior can become unpredictable, leading to inaccurate location updates or excessive battery drain. Stop the foreground service before initiating the background service, and vice-versa, to avoid conflict.
Coordinates -> Marker address
To convert longitude and latitude to the bubble's geolocation, you need to use this formula:

🛠 JavaScript SDK
NativelyLocation
const locationService = new NativelyLocation()
const location_callback = function (resp) {
console.log(resp.status); // "Success"/"Timeout"/"Error"
console.log(resp.longitude); // 50.1231231
console.log(resp.latitude); // 50.1231231
};
const minAccuracy = 50 // only available in 2.7.0 minAccuracy [iOS] - Radius in meters. All other values will be filtered!
const accuracyType = "Best" // only available in 2.7.0 accuractType [iOS] - Affects on location accuracy and battery life. BestForNavigation,Best,NearestTenMeters,HundredMeters,Kilometer,ThreeKilometers. More details here https://developer.apple.com/documentation/corelocation/cllocationaccuracy
const priority_android = "BALANCED" // "BALANCED" or "HIGH" [Android only]
const inerval = 10000 // in milliseconds
const fallback_to_settings = true; // available from v2.15.16. If true and user's Location permission is denied, will display a pop-up with the option to open the app settings and turn on permission.
// Foreground Location
locationService.current(minAccuracy, accuracyType, priority_android, location_callback, fallback_to_settings);
locationService.start(interval, minAccuracy, accuracyType, priority_android, location_callback, fallback_to_settings);
locationService.stop();
const location_bg_callback = function (resp) {
console.log(resp.status); // "SUCCESS"/"FAILED" - Start of background service was successfully or failed
};
const location_status_bg_callback = function (resp) {
console.log(resp.status); // true/false - BG Location Service running or not
};
// Background Location
const responseId = "my-user-id" // SHOULD BE A STRING! Identifer that you will receive together with coordinates to your webhook endpoint
locationService.startBackground(interval, minAccuracy, accuracyType, priority_android, responseId, location_bg_callback, fallback_to_settings);
locationService.stopBackground(location_bg_callback);
locationService.statusBackground(location_status_bg_callback); // >=v2.12.3Last updated
Was this helpful?