> For the complete documentation index, see [llms.txt](https://docs.ninox.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ninox.com/ninox-scripting/de/automate-your-workflows/work-with-functions/location-and-devices.md).

# Standort und Geräte

Lerne, wie du in Ninox Skripten Gerätestandorte liest, Links öffnest, Anrufe startest, URLs kodierst und Barcodes scannst.

Mit Standort- und URL-Funktionen arbeiten deine Skripte mit Standortwerten und URLs.

In diesem Kapitel lernst du, wie du:

* Standortwerte erstellst.
* Aktionen an das Gerät übergibst.
* URL-Teile sicher kodierst und dekodierst.

<table><thead><tr><th width="197.16015625">Funktion (A-Z)</th><th>Aufgabe</th></tr></thead><tbody><tr><td><code>geoDistance()</code></td><td>Gibt die direkte Entfernung zwischen zwei Standorten in Metern zurück</td></tr><tr><td><code>getCurrentLocation()</code></td><td>Gibt den aktuellen Standort deines Browsers zurück</td></tr><tr><td><code>getLocation()</code></td><td>Gibt einen Standortwert aus einer Adresszeichenfolge zurück</td></tr><tr><td><code>latitude()</code></td><td>Gibt den Breitengrad aus einem Standortwert zurück</td></tr><tr><td><code>location()</code></td><td>Gibt einen Standortwert aus Titel und Koordinaten zurück</td></tr><tr><td><code>longitude()</code></td><td>Gibt den Längengrad aus einem Standortwert zurück</td></tr><tr><td><code>openURL()</code></td><td>Öffnet einen Website- oder anderen Link</td></tr><tr><td><code>phone()</code></td><td>Gibt einen Telefonwert mit Anrufaktion zurück</td></tr><tr><td><code>url()</code></td><td>Gibt einen Linkwert aus Text oder Query-Daten zurück</td></tr><tr><td><code>urlDecode()</code></td><td>Dekodiert URL-kodierten Text</td></tr><tr><td><code>urlEncode()</code></td><td>Kodiert Text für die sichere Nutzung in URLs</td></tr></tbody></table>

## Mit Standortwerten arbeiten

Nutze diese Funktionen, wenn du mit einem Standortwert arbeiten oder Koordinaten an einen anderen Dienst übergeben willst.

### Mit einem Standortwert arbeiten <a href="#create-a-location-value" id="create-a-location-value"></a>

Nutze `location()`, wenn du einen Standortwert aus Titel, Breitengrad und Längengrad erstellen willst.

Nutze es, wenn du:

* Koordinaten in einem Standortfeld speichern willst.
* einen Titel und Koordinaten in einem Wert zusammenhalten willst.
* einen Standortwert an ein anderes Feld oder eine andere Funktion übergeben willst.

`location(string, number, number)`

* `string` der Titel für den Standort
* erstes `number` der Breitengrad
* zweites `number` der Längengrad

`location()` gibt einen Standortwert zurück.

Tipps:

* Nutze einen klaren Titel, damit Nutzer den gespeicherten Standort leicht erkennen.

#### Schauen wir uns einige Beispiele an:

```ninox
address := location("Ninox Office", 52.5235175, 13.3989201)
```

Speichert den Standort mit den angegebenen Koordinaten im Standortfeld `address`.

### Einen Standort aus einer Adresse mit `getLocation()` abrufen

Nutze `getLocation()`, um eine Adresse zu suchen und einen Standortwert zurückzugeben. Damit kannst du die Koordinaten eines Standortes direkt mit Ninox ermitteln und in das Standortfeld eintragen.

{% hint style="danger" %}
`getLocation()` verwendet Google Geocoding. Die Adresse wird an Google gesendet. Stelle sicher, dass du die Datenschutzbestimmungen deines Landes einhältst.\
Beachte auch die [Google-Nutzungsbedingungen](https://cloud.google.com/maps-platform/terms/maps-service-terms) zum Zwischenspeichern von Standortdaten: "… 30 aufeinanderfolgende Kalendertage. Danach muss der Kunde die zwischengespeicherten Google Maps-Inhalte löschen …".
{% endhint %}

`getLocation(string)` gibt einen Standortwert zurück, wenn Google genau ein Ergebnis findet.

* `string` die Adresse, die du im Google-Maps-Suchformat suchen willst: "Straße, Postleitzahl Ort"

Die Funktion gibt `null` zurück, wenn die Adresse leer, unbekannt oder mehrdeutig ist. Bei einer leeren Adresse wird keine Anfrage an Google gesendet.

{% hint style="info" %}
`getLocation()` ist nicht in Logikfeldern verfügbar.\
Nutze die Funktion in Buttons, `do as server`, globalen Funktionen und Triggern innerhalb von `do as deferred`.
{% endhint %}

#### Schauen wir uns ein Beispiel an:

```ninox
standort := getLocation("Monbijoustr. 3A, 10177 Berlin")
```

Speichert den Standort der Adresse im Feld "Standort".

```ninox
standort := getLocation(strasse + ", " + plz + " " + ort)
```

Speichert den passenden Standort aus den Feldern "Straße", "PLZ" und "Ort" im Feld "Standort".

### Den aktuellen Standort mit `getCurrentLocation()` abrufen

Nutze die Funktion in einem Button, um den aktuellen Geräte- bzw. Browserstandort in ein Feld zu schreiben oder weiterzuverarbeiten. Du musst so deinen aktuellen Standort nicht auf einer Karte auswählen.

{% hint style="warning" %}
`getCurrentLocation()` ist nicht in Logikfeldern verfügbar.
{% endhint %}

Erlaube dem verwendeten Browser den Zugriff auf den Standort. Erst dann gibt die Funktion deinen aktuellen Standort zurück und kann ihn in ein Feld schreiben oder weiterverarbeiten.

`getCurrentLocation()`\
`getCurrentLocation(maxAccuracy)`

* `maxAccuracy` eine Zahl für die Genauigkeit in Metern

`getCurrentLocation(50)` gibt Folgendes zurück:

* `null`, wenn der Browser eine Genauigkeit schlechter als 50 m meldet
* deinen Standort, wenn die Genauigkeit 50 m oder besser ist

Tipps:

* Der Titel des zurückgegebenen Standorts enthält die Koordinaten.
* Nutze die Funktion nicht in `do as server` oder einem Server-Trigger. Ninox bestimmt den Standort über dein Gerät.

#### Schauen wir uns einige Beispiele an:

```ninox
getCurrentLocation()
```

Gibt den aktuellen Standort deines Geräts ohne Genauigkeitsprüfung zurück. Antwortet dein Gerät innerhalb von 10 Sekunden nicht, ist das Ergebnis `null`.

```ninox
getCurrentLocation(30)
```

Gibt den aktuellen Standort mit einer Genauigkeit von 30 m oder besser zurück. Bei geringerer Genauigkeit gibt die Funktion keinen Standort zurück.

### Entfernungen mit `geoDistance()` berechnen

Nutze `geoDistance()`, um die Luftlinienentfernung zwischen zwei Standorten in Metern zurückzugeben.

Nutze die Funktion für:

* Geofencing-Regeln, zum Beispiel "innerhalb eines Umkreises von 100 m zum Standort"
* grobe Entfernungsschätzungen für den Vergleich von Zielen

`geoDistance(location, location)` gibt eine Zahl zurück.

* `location` ein Standortwert. Gib zwei Standortwerte für die Berechnung an.

Tipps:

* Gib immer zwei Standortwerte an. Ist einer der Werte leer, gibt die Funktion `null` zurück.
* Das Ergebnis liegt zwischen 0 und dem halben Erdumfang von 20.015 km. Es ist nie negativ.

#### Schauen wir uns einige Beispiele an:

```ninox
geoDistance(location("Berlin, Alexanderplatz", 52.5219, 13.4133), location("Berlin, Marienplatz", 52.5026, 13.4253))
```

Gibt `2.294,57` für die Entfernung in Metern zurück.

```ninox
round(geoDistance(location1, location2) / 1000, 2) + " km"
```

Gibt die Entfernung als besser lesbaren Text zurück, zum Beispiel "2,29 km".

### Koordinaten aus einem Standortwert mit `latitude()` und `longitude()` abrufen

Nutze diese Funktionen, um Breiten- und Längengrad als Dezimalzahlen aus einem Standortwert zu extrahieren.

Nutze sie, wenn du:

* Koordinaten in Zahlenfeldern speichern willst.
* Standortkoordinaten an einen anderen Dienst senden willst.

`latitude(location)`\
`longitude(location)`

* `location` der Standortwert, aus dem du Koordinaten extrahieren willst

`latitude()` und `longitude()` geben Zahlen zurück.

#### Schauen wir uns einige Beispiele an:

```ninox
latitude(meine_adresse)
```

Gibt den Breitengrad aus dem Standortfeld "Meine Adresse" als Dezimalzahl zurück.

Für Monbijoustr. 3A, 10177 Berlin gibt die Funktion beispielsweise `52.5200066` zurück.

```ninox
longitude(meine_adresse)
```

Gibt den Längengrad aus dem Standortfeld "Meine Addresse" als Dezimalzahl zurück.

Für Monbijoustr. 3A, 10177 Berlin gibt die Funktion beispielsweise `13.404954` zurück.

Tipps:

* Nutze ein Standortfeld oder einen anderen Ausdruck, der einen Standortwert zurückgibt.
* Extrahiere Breitengrad und Längengrad getrennt, wenn ein anderer Dienst numerische Koordinaten erwartet.
* Speichere das Ergebnis in Zahlenfeldern, wenn du die Werte wiederverwenden willst.

## Links öffnen und Geräteaktionen starten

Nutze diese Funktionen, wenn ein Skript Aktionen auf dem Gerät, im Browser oder eine andere App auslösen soll.

### Mit phone() einen Anruf starten

Nutze `phone()`, um einen Wert in einen Telefonwert umzuwandeln, so dass du ihn direkt aus der Ninox app anrufen kannst.

Nutze die Funktion, wenn du:

* Kopieren und Einfügen vermeiden willst.
* ein Logikfeld als anrufbares Telefonfeld anzeigen willst.
* eine Telefonnummer aus Text extrahieren und anrufbar machen willst.

`phone(number)`, `phone(string)`

* `number` Zahlenwert, den du als Telefonnummer verwenden willst
* `string` Textwert für Telefonnummern mit `+`, führenden Nullen oder Leerzeichen

`phone()` gibt einen Telefonwert zurück.

{% hint style="info" %}
Klicke rechts im Feld auf <i class="fa-phone">:phone:</i> oder auf einen **Button**, der die Funkion enthält. Ninox öffnet die Standard-Telefon-App deines Geräts.
{% endhint %}

#### Schauen wir uns einige Beispiele an:

```ninox
phone("+49 30 321 4554")
```

Zeigt den Text als Telefonnummer an. Nutzer können auf unterstützten Clients einen Anruf starten.

```ninox
phone(911)
```

Zeigt `911` als Telefonwert mit Anrufaktion an.

```ninox
phone(extractx(message, "\\+(\\d|\\s)+\\d"))
```

Extrahiert eine Telefonnummer aus dem Feld "Message" und zeigt sie als anrufbaren Telefonwert an.

Tipps:

* Die Anruffunktion hängt vom Client und Gerät ab.
* Ninox prüft nicht, ob der übergebene Wert eine echte Telefonnummer ist.
* Formatiere Telefonnummern korrekt. Sonst kann der Anruf einen Fehler auslösen.
* Die Funktion ist nützlich, um Telefonnummern aus längeren Texten zu extrahieren.

### Eine Website oder einen Link mit `openURL()` öffnen <a href="#open-a-url-with-openurl" id="open-a-url-with-openurl"></a>

Nutze `openURL()`, um eine URL direkt zu öffnen.

Nutze die Funktion, wenn du:

* eine Website über eine Schaltfläche öffnen möchtest.
* Nutzer zu einem Download-Link führen möchtest.
* einen aus deinen Daten erzeugten String in einen gültigen Link umwandeln und öffnen möchtest.

`openURL(string)`

* `string` die URL, die du öffnen möchtest

`openURL()` gibt keinen Wert zurück.

#### Beispiele

```ninox
openURL("https://ninox.com")
```

Öffnet die Ninox-Website.

```ninox
openURL("https://google.de/maps/place/" + strasse + ", " + plz + " " + ort)
```

Öffnet Google Maps und zeigt den Standort aus den Feldern „Straße“, „PLZ“ und „Ort“ des aktuellen Datensatzes.

Tipps:

* `openURL()` läuft nur auf dem Client.
* Erstelle die vollständige URL, bevor du sie öffnest.
* Die Funktion kodiert den String als gültigen Link.
* Nutze `urlEncode()` für dynamische Abfragewerte.

### Einen URL-Wert zurückgeben <a href="#create-and-decode-urls" id="create-and-decode-urls"></a>

Nutze `url()`, wenn du eine URL als Datenwert brauchst, statt sie sofort zu öffnen.

Nutze es, wenn du:

* einen Link in einem Feld oder einer Variable speichern willst.
* einen erzeugten Link in einem späteren Skriptschritt wiederverwenden willst.
* eine URL an eine andere Funktion übergeben willst.
* URL-kodierte Query-Werte aus einem JSON-Objekt hinzufügen willst.

`url(any)`\
`url(any, JSON)`

* `any` der Wert, den du in einen Link umwandeln willst
* `JSON` optionale Query-Werte, die URL-kodiert angehängt werden

`url()` gibt einen Linkwert zurück.

#### Schauen wir uns einige Beispiele an:

```ninox
url("https://ninox.com")
```

Zeigt die Ninox Website als Linkwert mit einer Internet-Schaltfläche an.

```ninox
url("https://ninox.com", {Name: "Max Mustermann"})
```

Gibt `https://ninox.com?Name=Max%20Mustermann` zurück.

Tipps:

* Ninox prüft nicht, ob der übergebene Wert eine gültige URL ist.
* Nutze das JSON-Argument, wenn du Query-Werte sicher anhängen willst.
* Nutze `url()`, wenn du den Link als Wert brauchst.
* Nutze `openURL()`, wenn du den Link sofort öffnen willst.

## URL-Teile kodieren und dekodieren

Nutze diese Funktionen, wenn Text sicher innerhalb einer URL übertragen werden soll.

### Text kodieren

Nutze `urlEncode()`, um Text in eine URL-sichere Form umzuwandeln.

Nutze es, wenn du:

* Nutzereingaben in einen Query-String setzen willst.
* sichere Such- oder API-URLs bauen willst.
* defekte Links durch Leerzeichen oder Sonderzeichen vermeiden willst.
* normalen Text in URL-konformen Text umwandeln willst.

`urlEncode(string)`

* `string` der Text, den du für die sichere Nutzung in einer URL kodieren willst

`urlEncode()` gibt einen String zurück.

#### Schauen wir uns einige Beispiele an:

```ninox
urlEncode("hello world")
```

Gibt `hello%20world` zurück.

```ninox
"https://ninox.com?Name=" + urlEncode("Jane Doe")
```

Gibt `https://ninox.com?Name=Jane%20Doe` zurück.

Tipps:

* Kodiere dynamische Werte, nicht die komplette URL-Struktur.
* Das ist besonders nützlich für Suchbegriffe und API-Parameter.

### Text dekodieren

Nutze `urlDecode()`, um URL-kodierten Text wieder in normalen Text umzuwandeln.

Nutze es, wenn du:

* kodierte Query-Werte lesen willst.
* gespeicherte URL-Teile als Klartext anzeigen willst.
* eine frühere Kodierung rückgängig machen willst.
* URL-konformen Text in lesbaren Text umwandeln willst.

`urlDecode(string)`

* `string` der kodierte URL-Text, den du dekodieren willst

`urlDecode()` gibt einen String zurück.

#### Schauen wir uns einige Beispiele an:

```ninox
urlDecode("hello%20world")
```

Gibt `hello world` zurück.

```ninox
urlDecode("https://ninox.com?Name=Jane%20Doe")
```

Gibt `https://ninox.com?Name=Jane Doe` zurück.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.ninox.com/ninox-scripting/de/automate-your-workflows/work-with-functions/location-and-devices.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
