Ce code:
navigator.geolocation.getCurrentPosition(
function(position) {
alert(position.coords.latitude, position.coords.longitude);
},
function(error){
alert(error.message);
}, {
enableHighAccuracy: true
,timeout : 5000
}
);
https://jsfiddle.net/FcRpM/ fonctionne dans Google Chrome sur mon ordinateur portable, mais sur mobile HTC One S (Android 4.1, GPS désactivé, localisation via mobile) réseaux et wifi activé), connecté à Internet via WiFi.
autres Android me localisent correctement.
Vous pouvez essayer ça. Il semble fonctionner sur mon appareil (Samsung Galaxy Nexus exécutant Chrome 27.0.1453.90 sur Wi-Fi (pas de connexion de données, pas de GPS activé))
navigator.geolocation.getCurrentPosition( function(position) { alert("Lat: " + position.coords.latitude + "\nLon: " + position.coords.longitude); }, function(error){ alert(error.message); }, { enableHighAccuracy: true ,timeout : 5000 } );
Le problème est que l'alerte ne prend que des chaînes (dans sa forme originale) mais vous passez 2 doubles. Modifiez la boîte d'alerte par exemple en alert('Hey', 'Hello');
et la sortie sera seulement Hey
. Changez le ,
En +
Et vous obtiendrez les chaînes concaténées HeyHello
. Vous ne pouvez pas utiliser un signe +
À l'intérieur du alert
car l'équation sera d'abord exécutée puis affichée.
J'espère que cela le rend clair.
THERE IS A CONTOURNEMENT: à l'appel watchPosition, et l'encapsulation dans une attente de 5 secondes avant d'effacer le watchID. Code ci-dessous;
var options = { enableHighAccuracy: true, maximumAge: 100, timeout: 60000 };
if( navigator.geolocation) {
var watchID = navigator.geolocation.watchPosition( gotPos, gotErr, options );
var timeout = setTimeout( function() { navigator.geolocation.clearWatch( watchID ); }, 5000 );
} else {
gotErr();
}
Je n'ai pas joué avec les valeurs "options" ou le délai d'expiration pour le moment, mais le code ci-dessus ramène des informations de positionnement précises sur chaque plate-forme que j'ai essayée.
Je viens de terminer de tester un tas d'appareils mobiles et la géolocalisation Javascript. J'ai utilisé l'exemple de code de Google afin de m'assurer que le problème n'est pas dans mon propre code.
Chrome pour Android 4.4 ne semble pas fonctionner avec les services de localisation GPS uniquement et le navigateur de stock 2.3 non plus. Ils ont tous deux besoin de "Haute précision" - l'utilisation des réseaux sans fil et 3G/4G.
Ce qui est drôle, c'est que Firefox pour Android fonctionne sans aucun problème uniquement GPS. Seul le stock Android (Chrome + Mobile Safari) échouent)) avec les paramètres de localisation GPS uniquement.
Et le reste du gang - Lumia WP8 avec GPS, Windows et Linux (tous deux avec ADSL) fonctionnait parfaitement avec tous les paramètres de localisation.
Eh bien, j'ai rencontré ce problème hier et le problème était que l'API de géolocalisation ne peut être utilisée que via HTTPS. Cela fonctionnera sur http://localhost
mais pour les autres appareils, vous devez être sur une connexion sécurisée.
J'espère que ça aide!
Après plusieurs heures de recherche de solution pour error3, je ne peux que redémarrer mon téléphone et la géolocalisation commence à fonctionner normalement. Dommage...
Cela fonctionnait pour moi pour chaque simulateur mais pas pour les appareils Android
ce qui a fonctionné pour moi était
navigator.geolocation.getCurrentPosition(
(position) => {
console.log(position);
},
(error) => console.log(new Date(), error),
{ enableHighAccuracy: false, timeout: 5000},
);
signifie au lieu de trois arguments, j'ai utilisé seulement deux moyens
{enableHighAccuracy: false, timeout: 5000}