How to get most accurate value within 10 seconds Javascript geolocation watchposition

Viewed 90

I want to get the value with best accuracy within 10 or 15 seconds of using navigator.geolocation.watch(). I can imagine this would work by writing the values of every refresh from watchposition() in an array and then take the latitude and longitude values of that with the best accuracy. But I dont know how to build that and make it work. Thanks in advance My Code:

var hinweis = document.getElementById("bm-ort");

function getLocation() {
  if (navigator.geolocation) {
    var options = {
      enableHighAccuracy: true,
      timeout: 5000,
      maximumAge: 0
    };
    navigator.geolocation.watchPosition(showPosition, showError, options);
  } else {
    hinweis.innerHTML = "Ihr Browser unterstützt die Standortabfrage nicht.";
  }
}


function showPosition(position) {
  const varoptions = {
    minimumFractionDigits: 2,
    maximumFractionDigits: 2
  };
  if (position.coords.accuracy > 20) {
    var genau = "Geben Sie den Ort bitte zusätzlich manuell an, wir konnten Ihren Standort nicht genau ermitteln.";
  } else {
    var genau = "Das hat geklappt!";
  }
  document.getElementById("form-field-bmmangelort").value = "https://www.google.de/maps/place/" + position.coords.latitude +
  "+" + position.coords.longitude;
  hinweis.innerHTML = "<b>"+genau+"</b><br><b>Höhengrad:</b> " + position.coords.latitude +
  "<br><b>Breitengrad:</b> " + position.coords.longitude +
  "<br><b>Genauigkeit:</b> ca. " + position.coords.accuracy.toLocaleString('de', varoptions) + " m";
}

function showPosition(position) {
  const varoptions = {
    minimumFractionDigits: 2,
    maximumFractionDigits: 2
  };
  if (position.coords.accuracy > 20) {
    var genau = "Geben Sie den Ort bitte zusätzlich manuell an, wir konnten Ihren Standort nicht genau ermitteln.";
  } else {
    var genau = "Das hat geklappt!";
  }
  document.getElementById("form-field-bmmangelort").value = "https://www.google.de/maps/place/" + position.coords.latitude +
  "+" + position.coords.longitude;
  hinweis.innerHTML = "<b>"+genau+"</b><br><b>Höhengrad:</b> " + position.coords.latitude +
  "<br><b>Breitengrad:</b> " + position.coords.longitude +
  "<br><b>Genauigkeit:</b> ca. " + position.coords.accuracy.toLocaleString('de', varoptions) + " m";
}

function showError(error) {
  switch(error.code) {
    case error.PERMISSION_DENIED:
      hinweis.innerHTML = '<p><b>Wir können Ihren Standort nicht ermitteln, geben Sie den Ort bitte manuell ein.</b>'
      break;
    case error.UNKNOWN_ERROR:
      hinweis.innerHTML = "<b>Ein Fehler ist aufgetreten.<b> Wir konnten Ihren Standort nicht ermitteln."
      break;
    default:
      hinweis.innerHTML = "<b>Wir können Ihren Standort nicht ermitteln, geben Sie den Ort bitte manuell ein.</b>";
  }
}
<div class="wp-block-buttons">
<div class="wp-block-button">
<a class="wp-block-button__link" style="color: var( --e-global-color-b8805dc )" onclick="getLocation()" role="link">Standort einmalig verwenden</a>
</div>
</div>
<div id="bm-ort"></div>

0 Answers
Related