0

HTML Code GEO Location

Hallo zusammen

es gibt eine HTML Code/Funktion über die man die Geräteposition Latitude und Longitude abrufen kann.

Leider bekomme ich das nicht hin dies umzusetzen und in einem Textfeld oder Funktionsfeld die Daten anzuzeigen/auszugeben.

Kann das überhaupt funktionieren oder muss ich einen anderen Ansatz wählen?

<!DOCTYPE html>
<html>
<body>

<p>Click the button to get your coordinates.</p>

<button onclick="getLocation()">Try It</button>

<p id="demo"></p>

<script>
var x = document.getElementById("demo");

function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
  } else {
    x.innerHTML = "Geolocation is not supported by this browser.";
  }
}

function showPosition(position) {
  x.innerHTML = "Latitude: " + position.coords.latitude +
  "<br>Longitude: " + position.coords.longitude;
}
</script>

</body>
</html>

Hier wurde das schon oft versucht die aktuelle Geräteposition zu ermitteln habe jetzt aber noch keine Lösung gefunden hier im Forum. Vielleicht ist das ein Ansatz mit dem sich hier jemand kurz mit HTML Fähigkeiten beschäftigen möchte 🙂

Gruß

Andreas Kappes 

18 Antworten

null
    • Josef_Koenig
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Eigentlich sollte die Geolocation-Abfrage so funktionieren:

    let response := http("GET", "http://ip-api.com/json/?fields=status,message,country,countryCode,region,regionName,city,zip,lat,lon,timezone,isp,org,as,query");
    alert(response)

    Leider bekomme ich eine Fehlermeldung: "request has failed - error"
    Warum die Fehlermeldung kommt, weiß ich nicht.
    Denn gibt man die http-Abfrage direkt in die Suchzeile des Browsers ein, bekommt man eine korrekte JSON-Antwort.

    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    let response := do as server http("GET", "http://ip-api.com/json/?fields=status,message,country,countryCode,region,regionName,city,zip,lat,lon,timezone,isp,org,as,query") end;
    alert(response)

    • Andreas_Kappes
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo zusammen,

    beide Lösungen fragen  ja den Standort der IP Adresse ab und nicht den tatsächlichen Standort vom Mobilen Gerät . Aber genau das versuche ich zu bekommen ohne mir einen API Key von Google Maps generieren zu müssen.

    Gruß

    Andreas

    • David_Gyenes
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Andreas Kappes  Put this code into a formula field, then replace the B,C (in line 18 and 19) to the field ID of the Longitude and Latitude fields have in your DB:

    html("<!DOCTYPE html>
    <html>
    <body>

    <button onclick='getLocation()'>Location</button>

    <script>

    function getLocation() {
        navigator.geolocation.getCurrentPosition(showPosition);
    }

    function showPosition(position) {
        database.update(""" + raw(Id) + """, ""C"", position.coords.latitude);
        database.update(""" + raw(Id) + """, ""B"", position.coords.longitude);
    }
    </script>

    </body>
    </html>

      • UweG
      • vor 1 Jahr
      • Gemeldet - anzeigen

      David Gyenes Super Arbeit.

      Ergänzung für die deutsche Nutzung:

      Statt raw(Id), raw(Nr) und am Ende des Code ") ergänzen.

      Dann funktioniert das Script auf dem Mobilen Gerät.

      • Andreas_Kappes
      • vor 1 Jahr
      • Gemeldet - anzeigen

      UweG 

      Hallo

      und was ist dann "C" und "B" eine Variable die ich zuvor deklarieren muss? oder  z.B. ein Textfeld?

      Bzw. wie bekomme ich dann die Daten dann noch in ein Textfeld

      der Namen meine beiden Textfelder dazu sind Breitengrad und das andere Längengrad

      Gruß

      Andreas

      • UweG
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Andreas Kappes 'B' und 'C' sind die ID's der entsprechenden Textfelder.
      Du musst herausbekommen, wie die jeweilige NinoxID für Breitengrad und Längengrad lautet.
      Bsp. Wenn du in einer leeren Tabelle ein Feld neu anlegst, bekommt es die ID 'A'. Das nächste Feld dann die ID 'B' usw. Bis auf Berechnungsfelder, die keine ID bekommen.
      Ninox nutzt die ID's intern, um bspw. bei Namensänderungen von Feldern diese auch überall in der DB zu ändern, wo sie im Script/Verknüpfungen genutzt werden.
      Auch für die API-Anbindung sind die ID's extrem wichtig.

      Wenn du die Ninox-Cloud nutzt, kannst du zur Ermittlung der Feld-ID hier nachlesen: https://forum.ninox.de/t/g9hdxh1/ninox-feld-ids-fur-http-anfragen-auerhalb-ninox-ermitteln

      Wenn du nur die Ninox-App benutzt, musst du dich bei einer bestehenden Tabelle durch die BuchstabenKombinationen durchprobieren oder du legst eine neue Tabelle an und erstellst als erstes die beiden Text/Zahlenfelder. Diese haben dann als ID 'A' und 'B'.

      • Andreas_Kappes
      • vor 1 Jahr
      • Gemeldet - anzeigen

      UweG 

      das klappt jetzt super in einer neuen Tabelle genau so wie ich das benötige. Ich werde  mit der Cloud noch testen ob ich die Tabellen ID herausbekomme ansonsten gibt es für die Standortabfrage eine neue Tabelle mit Ansicht das ist dann auch kein Problem.

      Ihr seid hier einfach Spitze 👍👏 danke UweG  und David Gyenes 

      Andreas

      • Andreas_Kappes
      • vor 1 Jahr
      • Gemeldet - anzeigen

      UweG

      die Auslesung der Feld-Id's hat auch funktioniert

      nur hierzu noch eine Frage an welcher stelle muss ich den Tabellennamen eintragen/erweitern wenn ich nicht alles auslesen möchte

      Danke nochmals

    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    let vUrl := "https://api.ninox.com/v1/teams/" + teamId() + "/databases/" + databaseId() + "/tables/tableId("TABELLENNAME")";
    let vHeader := {     Authorization: "Bearer xxxxxxxxxxxxxxxx",     'Content-Type': "application/json"   };
    Response := do as server     formatJSON(http("GET", vUrl, vHeader, ""))   end

    Wichtig ist, daß der Tabellenname in Anführungszeichen in der Funktion tableId() steht.

      • Andreas_Kappes
      • vor 1 Jahr
      • Gemeldet - anzeigen

      UweG 

      funktionieren tut es jetzt so:

      let vUrl := "https://api.ninox.com/v1/teams/" + teamId() + "/databases/" + databaseId() + "/tables/" + tableId("Tabellenname");
      let vHeader := {
              Authorization: "Bearer xxxxxxxxxxxxxxxx",
              'Content-Type': "application/json"
          };
      Response := do as server
              formatJSON(http("GET", vUrl, vHeader, ""))
          end
    • info.73
    • vor 8 Monaten
    • Gemeldet - anzeigen

    Hallo, 

    und vielen Dank für das Script. Leider ist es so, dass es bei mir am PC funktioniert (da werden wohl die GPS Daten es Serverstandortes oder so eingetragen), allerdings funktioniert der Button nicht in der Android app -> und dort sollte diese Funktion genutzt werden ; unterwegs!

    Hat jemand eine Ahnung oder einen Tip, wie ich dieses Script unter Android zum laufen bekomme?

    Vielleicht gibts Erfahrungswerte? Funktiniert das evtl. nur bei Iphone?

    Gruß

    Daniel 

      • Andreas_Kappes
      • vor 8 Monaten
      • Gemeldet - anzeigen

       

      Hallo,

      in meinem privaten Android-Handy funktioniert die App leider nicht bzw. grottenschlecht :-( und ich kann es nicht testen

      wenn ich aber über einen Browser gehe auf dem Android-Handy funktioniert es

      Hast du Ninox erlaubt auf Standortdaten zugreifen zu dürfen?

      Gruß

      Andreas

    • info.73
    • vor 8 Monaten
    • Gemeldet - anzeigen

    Moin,

    die App hat alle Berechtigungen und funktioniert bei mir EIGENTLICH ganz okay (bis auf die GPS Abfrage). Per Browser funktioniert es tatsächlich auch mit den GPS Daten. Gibt es hier vielleicht einen Erfahrungsbericht, ob die ganze Geschichte per APP auf einem Iphone besser funktioniert?

      • Andreas_Kappes
      • vor 8 Monaten
      • Gemeldet - anzeigen

      info 

      Meine Kollegen arbeiten mit einem IPad da funktioniert es tadellos in der APP

    • Horst_Fertig
    • vor 8 Monaten
    • Gemeldet - anzeigen

    Servus zusammen,

    ich kann (auch) bestätigen, dass dieses HTML-Script am PC im Browser problemlos und sehr gut funktioniert, in der Android-App jedoch leider nicht und dort dementsprechend "nix" liefert (auch keinen Fehler, o.ä.).

    Öffnet man auf dem Smartphone (oder Tablet) Ninox dann ebenfalls im Browser (habe jetzt allerdings nur in Chrome getestet) funktioniert es wieder und liefert dann auch (im Gegensatz zum PC) m. E. ein sehr exaktes Ergebnis in Sachen Latitude und Longitude, soll heißen, definitiv auf die Hausnummer genau - geöffnet und betrachtet im Anschluss in OpenStreetMap. Die am PC ermittelten Koordinaten liegen dabei im Vergleich um ca. 200 m "daneben").

    Wäre m. E. natürlich sehr gut und schön, wenn diese schicke Funktion auch direkt in der Android-App nutzbar wäre - und ja, die App hat natürlich die erforderlichen Berechtigungen, also Zugriff auf den aktuellen Standort.

      • Andreas_Kappes
      • vor 8 Monaten
      • Gemeldet - anzeigen

       

      Vielleicht ist das Rückmelden der Daten in der Android App ein Problem oder muss anders gelöst werden mit dem Sichtbaren Namen des Feldes oder so. 🤷‍♂️

      Hier könnte mal vielleicht ein Entwickler von Ninox Auskunft geben der sich mit der Android App beschäftigt

       

      Gruß

      Andreas

      • Horst_Fertig
      • vor 8 Monaten
      • Gemeldet - anzeigen

      @Andreas Kappes 

      Guten Morgen,

      nein, auch die Verwendung der "Klartext-Feldnamen" an Stelle der internen Ninox Feld-IDs (A, B, C....) verändert zumindest in meinem kleinen Experiment nichts. 

      Soll heißen, es funktioniert im Browser alternativ auch mit diesen "richtigen" Feldnamen problemlos (und man könnte sich offensichtlich die kleine Mühe ersparen, herauszufinden, wie die internen Feldbezeichnungen lauten - sofern es sich halt nicht einfach um die ersten beiden Felder, in einer neu angelegten Tabelle handelt, oder manin einer etwas umfangreicheren Tabelle unterwegs ist...).

      Es funktioniert aber damit eben auch in der Android-App NICHT (jedenfalls nicht bei mir) und unterscheidet sich somit nicht von den internen Feldnamen. Im Browser auf dem Android-Gerät wiederum funktioniert es dann auch - wie halt im Browser am PC.

      Und noch mehr Feldnamen, mit denen man experimentieren könnte, wird's ja hoffentlich nicht geben... ;-)

      Grüße

      HF

Content aside

  • vor 8 MonatenZuletzt aktiv
  • 18Antworten
  • 366Ansichten
  • 8 Folge bereits