watchPosition () vs getCurrentPosition () z setTimeout

Muszę określić lokalizację osoby w promieniu 50 metrów. Zastanawiam się, czy powinienem użyćnavigator.location.watchPostion() albo zadzwońgetCurrentPostion() w kółko.watchPostion() jest właściwym interfejsem API W3C do robienia tego, co chcę, ale praktycznie wydaje się być przesadą.

Oto mój kod:

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();});

zauważyłemwatchPostion() wydaje się ostatecznie prowadzić do większej dokładności (po pewnym czasie), ale zastanawiam się, czy pozycja zmienia się tak szybko, że powoduje to, że wiele rzeczy jest pobieranych na mój obszar mapy, ze stałymi żądaniami http, które wkrótce są niedostępne data, zastąpiona nowymi przychodzącymi. Kiedy używamwatchPosition(), zanim strona się załaduje, zajmuje trochę czasu.

questionAnswers(2)

yourAnswerToTheQuestion