Sto costruendo un piccolo script che i client installeranno sulla loro pagina. La geolocalizzazione non è necessaria per questo, tuttavia se esiste sarebbe bello avere. C'è un modo per me per controllare se la pagina dei clienti ha richiesto le informazioni di geolocalizzazione e se l'utente selezionato consente di ottenere il lat & lon senza creare un altro prompt?Controlla se la geolocalizzazione era consentita e ottieni Lat Lon
risposta
non è possibile con le API di geolocalizzazione, ma è possibile con la nuova autorizzazione API
Questo codice è utile se si vuole provare a ricevere le coordinate, ma non si vuole disturbare l'utente con un pronta dialogo cuz le coordinate non è così importante e può così, ripiegate sulla geoip
function getCoords(){
return new Promise((resolve, reject) =>
navigator.permissions ?
// Permission API is implemented
navigator.permissions.query({name:'geolocation'}).then(permission =>
// is geolocation granted?
permission.state === "granted"
? navigator.geolocation.getCurrentPosition(pos => resolve(pos.coords))
: resolve(null),
reject) :
// Permission API was not implemented
reject(new Error("Permission API is not supported"))
)
}
getCoords().then(coords => console.log(coords))
Questo risolverà a nulla, se non è stata concessa l'autorizzazione, lanciare un errore se un po 'di codice javascript non è stato supportato dal browser e risolvere le coordinate se è stato concesso
È possibile rilevare se la funzione esiste esaminando l'oggetto finestra.
if('geolocation' in window){
navigator.geolocation.getCurrentPosition(...);
}
questo causerà un prompt singolo utente a venire che chiede all'utente se desiderano condividere la loro posizione con la tua pagina.
Se la geolocalizzazione non è disponibile nel browser, non verrà eseguita affatto.
EDIT Se hai già richiesto l'utente su questo caricamento della pagina per consentire l'accesso geolocalizzazione, esso non richiederà nuovamente. Se l'utente si sposta indietro e torna a questa pagina, lo richiederà nuovamente.
È possibile effettuare chiamate successive all'API senza richiedere durante quella sessione di pagina.
Riferimento: MDN Geolocation -- Watching the current position
Non penso che gli importi se il browser lo supporta o meno - vuole sapere se, nel caso in cui il browser lo supporti, può chiamare 'getCurrentPosition()' * senza * un prompt perché il sito ha già causato un tale prompt prima. – ThiefMaster
@ThiefMaster. Questo non è un downvote a meno che tu non abbia posto la domanda. L'intenzione del richiedente domanda non è chiara. In tal caso, tuttavia, si prega di consultare il mio aggiornamento. – tkone
@TheifMaster thats correct – Stefan
Secondo il API non è possibile per scoprire l'utente ha già consentito il sito corrente per recuperare la posizione dell'utente senza causare un prompt se non ha. Vedere Endless answer
Suggerirei di consentire agli utenti di passare un argomento quando si incorpora lo script indicando se deve utilizzare le funzionalità di geolocalizzazione o meno.
Se il prompt richiesto dipende dal browser e dalle impostazioni di "privacy" disponibili. Safari 6 ha 3 impostazioni: richiede una volta per sito, richiede una volta per sito al giorno e nega. Chrome 23 ha 3 impostazioni: consenti a tutti, chiedi e nega tutto. Certo sarebbe meglio se ci fosse un modo per verificare se è già consentito senza disturbare l'utente.
- 1. Converti Lat/Lon in MGRS
- 2. Converti punto in lat lon
- 3. Come memorizzare il punto di geolocalizzazione lat-lon in un documento per la ricerca GAE?
- 4. lat/lon to utm a lat/lon è estremamente imperfetto, come mai?
- 5. indirizzo per geolocalizzazione lat/long
- 6. Calcoli semplici per lavorare con lat/lon + km di distanza?
- 7. Ottenere lon/lat da pixel coords in Google Static Map
- 8. MySQL GIS Lat/Lon a X/Y: qual è?
- 9. Convertire lat/lon nel codice postale/nome del quartiere
- 10. Python - Lotto converte le posizioni GPS in decimali Lat Lon
- 11. Geolocalizzazione con IPv6?
- 12. Utilizzo di Google Weather API con Lat e Lon - come formattare?
- 13. javascript - la geolocalizzazione non funziona nella codepen
- 14. C'è un modo per eseguire una geocodifica in batch (ottenere lat/lon per indirizzo e viceversa)?
- 15. Meteor.js reactive html5 geolocalizzazione position.coords
- 16. Rails rileva se la richiesta era AJAX
- 17. Se si dispone di un GeoTiff, sarebbe possibile trasformare un punto Lat/Lon in X, Y utilizzando GeoTransform?
- 18. Ordine Lon/Lat quando si utilizza il tipo POINT spaziale con MySQL
- 19. Come ottenere lat/lon di un clic del mouse con Bing Maps AJAX Control v7
- 20. Distanza geografica/geospaziale tra 2 elenchi di punti lat/lon (coordinate)
- 21. PHP controlla se il file esiste e non la directory
- 22. getline controlla se la linea è spazio
- 23. Smarty: controlla se la variabile è nell'array
- 24. Controlla se la stringa inizia con qualcosa?
- 25. Controlla se la finestra è un MessageBox
- 26. Controlla se la directory è vuota
- 27. Controlla se la colonna dataframe è Categorica
- 28. Controlla se la proprietà ha attributo
- 29. Controlla se la directory esiste in lua?
- 30. Controlla se la stringa è vuota
Questo è un approccio pratico ma, poiché si tratta di un'API piuttosto nuova, è importante menzionare i possibili problemi di compatibilità. Ad esempio: http://caniuse.com/#feat=permissions-api – Mario