Ottieni la posizione GPS dal browser web


164

Sto sviluppando un sito Web mobile, lì ho integrato Google Maps, devo riempire dinamicamente il campo "Da" di Google Maps.

È possibile ottenere la posizione GPS dal browser Web e riempirla dinamicamente nel campo "Da" di una mappa di Google?


2
Quali cellulari intendi supportare?
Rowland Shaw,

voglio supportare tutti i browser mobili, ma l'iPhone è la priorità assoluta
Ganesh

Potrebbe essere meglio scrivere un'app nativa, poiché consentirà una più stretta integrazione con l'hardware, dove è disponibile
Rowland Shaw,

16
se la necessità riguarda solo la posizione, un'app nativa è enormemente eccessiva. iOS non è l'unico dispositivo mobile, è solo una priorità.
Gonçalo Veiga,

Risposte:


194

Se usi l' API di geolocalizzazione , sarebbe semplice come usare il seguente codice.

navigator.geolocation.getCurrentPosition(function(location) {
  console.log(location.coords.latitude);
  console.log(location.coords.longitude);
  console.log(location.coords.accuracy);
});

Potresti anche essere in grado di utilizzare l'API per la posizione del cliente di Google .

Questo problema è stato discusso in È possibile rilevare la posizione GPS di un browser mobile? e Ottieni dati sulla posizione dal browser mobile . Puoi trovare maggiori informazioni lì.


L'API di localizzazione dei client di Google è ancora citata? Il link fornito va a Google Loader
Shane N

1
Non lo vedo su quella pagina come una delle API disponibili. - Potresti essere in grado di utilizzare l'API di Google Latitude: code.google.com/apis/latitude - Con questo è possibile ottenere la posizione corrente del cliente: code.google.com/apis/latitude/v1/…
dochoffiday


Hyy possiamo abilitare automaticamente la posizione di condivisione tramite la codifica
Mr. Tomar

2
Questo richiede l'utilizzo della tua posizione?
Jack,

21

Per dare una risposta un po 'più specifica. HTML5 ti consente di ottenere le coordinate geografiche e fa un lavoro abbastanza decente. Nel complesso il supporto del browser per la geolocalizzazione è abbastanza buono, tutti i principali browser tranne ie7 e ie8 (e opera mini). IE9 fa il lavoro ma è il peggiore. Acquista caniuse.com:

http://caniuse.com/#search=geol

Inoltre hai bisogno dell'approvazione del tuo utente per accedere alla sua posizione, quindi assicurati di verificarlo e di dare alcune istruzioni decenti nel caso in cui sia spento. Soprattutto per l'attivazione di Iphone i permessi per Safari è un po 'complicato.


dotnetcurry.com/aspnet-mvc/782/… è un comodo riferimento per l'implementazione nell'ambiente asp.net mvc
Walter de Jong

13

Usa questo e troverai tutte le informazioni su http://www.w3schools.com/html/html5_geolocation.asp

<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>

1
Solo una nota: getCurrentPosition () e watchPosition () non funzionano più su origini non sicure. Per utilizzare questa funzione, è consigliabile passare dall'applicazione a un'origine protetta, come HTTPS.
user2589273

4

C'è l' API GeoLocation , ma al momento il supporto del browser è piuttosto scarso. La maggior parte dei siti che si preoccupano di tali cose utilizzano un database GeoIP (con le consuete disposizioni sull'inesattezza di tale sistema). Puoi anche consultare servizi di terze parti che richiedono la cooperazione dell'utente come FireEagle .


1
grazie mille per la tua rapida risposta. se possibile, puoi darmi qualche altro consiglio ...
Ganesh,

2

Osservabile

/*
  function geo_success(position) {
    do_something(position.coords.latitude, position.coords.longitude);
  }

  function geo_error() {
    alert("Sorry, no position available.");
  }

  var geo_options = {
    enableHighAccuracy: true,
    maximumAge        : 30000,
    timeout           : 27000
  };

  var wpid = navigator.geolocation.watchPosition(geo_success, geo_error, geo_options);
  */
  getLocation(): Observable<Position> {
    return Observable.create((observer) => {
      const watchID = navigator.geolocation.watchPosition((position: Position) => {
        observer.next(position);
      });
      return () => {
        navigator.geolocation.clearWatch(watchID);
      };
    });
  }

  ngOnDestroy() {
    this.sub.unsubscribe();
  }

1

Usiamo le ultime funzioni fat fat arrow :

navigator.geolocation.getCurrentPosition((loc) => {
  console.log('The location in lat lon format is: [', loc.coords.latitude, ',', loc.coords.longitude, ']');
})
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.