watchPosition () vs getCurrentPosition () mit setTimeout

Ich muss den Standort einer Person innerhalb von 50 m bestimmen. Ich frage mich, ob ich verwenden sollnavigator.location.watchPostion() oder anrufengetCurrentPostion() wieder und wieder.watchPostion() ist die richtige W3C-API, um das zu tun, was ich will, aber praktisch scheint es übertrieben zu sein.

Hier ist mein Code:

var map = null;
var marker = null;
var layer = null;

function locFn(pos) {

  var lat = pos.coords.latitude;
  var lon = pos.coords.longitude;

  $("#hlat").val(lat);
  $("#hlong").val(lon);

  document.getElementById("lnkMap").href = 
    "http://maps.google.com/maps?q=My+Loc@" + lat
    + "," + lon + "&z=18&t=h";

  var point = new GLatLng(lat, lon);

  if (pos.coords.accuracy < 100) {
    map.setCenter(point, 18);

    if (marker != null) {
      marker.setLatLng(point);
    }
    else {
      var ico = new GIcon();
      ico.image = "img/Blue-Dot.png";
      ico.iconSize = new GSize(22, 22);
      ico.iconAnchor = new GPoint(11, 11);
      marker = new GMarker(point, { icon: ico });
      layer = map.addOverlay(marker, { title: "You are here." });
    }
  }
  else if (pos.coords.accuracy > 2000) {
    if (marker != null) { marker.setLatLng(point); }
    map.setCenter(point, 15);
  }
  else if (pos.coords.accuracy > 900) {
    if (marker != null) { marker.setLatLng(point); }
    map.setCenter(point, 16);
  }
  else if (pos.coords.accuracy > 100) {
    if (marker != null) { marker.setLatLng(point); }
    map.setCenter(point, 17);
  }
}

function locFail() {
  //alert("Failed to retrieve location.");
}

var watchID = null;

function processPoints() {
  map = new GMap2(document.getElementById("map_canvas"), 
                  { mapTypes: [G_HYBRID_MAP] });
  try {
    watchID = navigator.geolocation.watchPosition(locFn, locFail,
          { enableHighAccuracy: true });
  }
  catch(err) { /* desktop?*/ }
}
$(function(){processPoints();});

ich habe bemerktwatchPostion() scheint letztendlich (nach einer Weile) zu mehr Genauigkeit zu führen, aber ich frage mich, ob sich die Position so schnell ändert, dass eine Menge Dinge auf meinen Karten-Canvas heruntergeladen werden, mit konstanten http-Anfragen, die bald veraltet sind. Datum, ersetzt durch die neuen, die hereinkommen. Wenn ich benutzewatchPosition()dauert es eine Weile, bis die Seite geladen wird.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage