Saltearse al contenido
Tauri

Geolocation

Esta página aún no está disponible en tu idioma.

Get and track the device’s current position, including information about altitude, heading, and speed (if available).

This plugin requires a Rust version of at least 1.77.2

Platform Level Notes
windows
linux
macos
android
ios

Install the geolocation plugin to get started.

Use your project’s package manager to add the dependency:

npm run tauri add geolocation

Apple requires privacy descriptions to be specified in Info.plist for location information, where you should describe why your app needs to access it. Illustrated below is an example description:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSLocationWhenInUseDescription</key>
<string>Required to do XY</string>
</dict>
</plist>

This plugin automatically adds the following permissions to your AndroidManifest.xml file:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

If your app requires GPS functionality to function, you should add the following to your AndroidManifest.xml file:

<uses-feature android:name="android.hardware.location.gps" android:required="true" />

The Google Play Store uses this property to decide whether it should show the app to devices without GPS capabilities.

The geolocation plugin is available in JavaScript.

import {
checkPermissions,
requestPermissions,
getCurrentPosition,
watchPosition,
} from '@tauri-apps/plugin-geolocation';
let permissions = await checkPermissions();
if (
permissions.location === 'prompt' ||
permissions.location === 'prompt-with-rationale'
) {
permissions = await requestPermissions(['location']);
}
if (permissions.location === 'granted') {
const pos = await getCurrentPosition();
await watchPosition(
{ enableHighAccuracy: true, timeout: 10000, maximumAge: 0 },
(pos) => {
console.log(pos);
}
);
}

By default all potentially dangerous plugin commands and scopes are blocked and cannot be accessed. You must modify the permissions in your capabilities configuration to enable these.

See the Capabilities Overview for more information and the step by step guide to use plugin permissions.

src-tauri/capabilities/mobile.json
{
"$schema": "../gen/schemas/mobile-schema.json",
"identifier": "mobile-capability",
"windows": ["main"],
"platforms": ["iOS", "android"],
"permissions": [
"core:default",
"geolocation:allow-check-permissions",
"geolocation:allow-request-permissions",
"geolocation:allow-get-current-position",
"geolocation:allow-watch-position"
]
}

Permission Table

Identifier Description

geolocation:allow-check-permissions

Enables the check_permissions command without any pre-configured scope.

geolocation:deny-check-permissions

Denies the check_permissions command without any pre-configured scope.

geolocation:allow-clear-permissions

Enables the clear_permissions command without any pre-configured scope.

geolocation:deny-clear-permissions

Denies the clear_permissions command without any pre-configured scope.

geolocation:allow-clear-watch

Enables the clear_watch command without any pre-configured scope.

geolocation:deny-clear-watch

Denies the clear_watch command without any pre-configured scope.

geolocation:allow-get-current-position

Enables the get_current_position command without any pre-configured scope.

geolocation:deny-get-current-position

Denies the get_current_position command without any pre-configured scope.

geolocation:allow-request-permissions

Enables the request_permissions command without any pre-configured scope.

geolocation:deny-request-permissions

Denies the request_permissions command without any pre-configured scope.

geolocation:allow-watch-position

Enables the watch_position command without any pre-configured scope.

geolocation:deny-watch-position

Denies the watch_position command without any pre-configured scope.


© 2025 Tauri Contributors. CC-BY / MIT