Je développe un site Web qui s'appuie sur la traction des données de géolocalisation d'un utilisateur mobile. Je le fais la manière typique via: Ceci échoue toujours avec [ObjetError] dans la fonction ErrorOnlocate, même si je change la méthode de géolocalisation. P> Ceci est sur un héros HTC avec Android 2.1 en utilisant tout ce que navigateur est intégré. Mon GPS est activé et j'ai demandé au navigateur de permettre aux sites Web de voir mon emplacement. La fonctionnalité "Emplacement" de Google Map Native Application sur le téléphone Picks Up My Emplacement Juste bien P> Plus d'autres si je visitant mon site à l'aide de Firefox 3.5 sur mon ordinateur personnel, il trouvera mon emplacement correctement. (Je crois qu'il utilise une combinaison de points de données IP et AP). Quoi qu'il en soit, il utilise le même JavaScript. P> Edit: Ceci est HTML / JS dans un navigateur et non une application native. Le message d'erreur exact est également "Le dernier fournisseur d'emplacement a été désactivé" p> p>
4 Réponses :
est-ce d'être accédé à partir d'un Sinon, je suis Je ne sais pas précisément ce qui ne va pas avec votre JS, mais voici HTML + JS que je connais fonctionne avec le navigateur Android: P> webview code> ou de l'application de navigateur Android? Si d'un
webview code>, vous devrez peut-être activer la géolocalisation via un appel Java. Voir le Référence WebView pour cela.
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function watchLocation(successCallback, errorCallback) {
successCallback = successCallback || function(){};
errorCallback = errorCallback || function(){};
// Try HTML5-spec geolocation.
var geolocation = navigator.geolocation;
if (geolocation) {
// We have a real geolocation service.
try {
function handleSuccess(position) {
successCallback(position.coords);
}
geolocation.watchPosition(handleSuccess, errorCallback, {
enableHighAccuracy: true,
maximumAge: 5000 // 5 sec.
});
} catch (err) {
errorCallback();
}
} else {
errorCallback();
}
}
function init() {
watchLocation(function(coords) {
document.getElementById('test').innerHTML = 'coords: ' + coords.latitude + ',' + coords.longitude;
}, function() {
document.getElementById('test').innerHTML = 'error';
});
}
</script>
</head>
<body onload="init()">
<div id="test">Loading...</div>
</body>
</html>
Hmm, merci pour la réponse. C'est une approche différente mais le comportement est bizarre. Il faut plus de 2 minutes pour trouver un emplacement et une fois que cela affiche uniquement les coordonnées environ 5 secondes, puis affiche enfin "l'erreur".
J'ai ajouté les options à mon code ci-dessus et cela fonctionne exactement de la même manière, prend plus de 2 minutes pour obtenir un emplacement, mais ce n'est pas une erreur d'erreur au moins. La clé est le drapeau AcableHighCuceCuracy, sans que le drapeau est erreurs à chaque fois. Savez-vous un forum plus spécialisé pour prendre cette enquête, car à 2 minutes pour obtenir un verrou, ce projet est mort dans l'eau.
Impair, je reçois une réponse presque immédiatement sur mon Nexus. Peut-être que c'est un problème avec l'appareil et non le code? J'essaierais cela avec un émulateur et je l'envoie des données de localisation simulées via DDMS.
J'ai testé la fonctionnalité de géolocalisation HTML5 avec les deux téléphones suivants:
Les deux exécutaient le système d'exploitation Android 2.1 Update1 et ils ont toutes deux échec à la géolocalisation à l'aide du navigateur Google intégré et des sites de démonstration tels que: P>
Cependant, j'ai développé ma propre application (en utilisant une combinaison du code déjà présenté ci-dessus) qui fonctionne avec succès sur: p>
et le code que j'utilise est: p>
JavaScript Lib:
Fonction Watchlocation (SUCCESSCALLACKBACK, ERRORCALLACK) {
SUCCESSCALLBACK = SUCCESSCALLBACK || fonction(){};
ErrorCallback = ErrorCallback || fonction(){}; p>
code réel dans mon fichier HTML:
Désolé, ce code source ne veut que le formater correctement, le message M me et je vous enverrai directement le code si vous le souhaitez. P> P>
if (is_browser_gps_capable()) {
$('geo_location').innerHTML = 'Locating device...';
watchLocation(function(coords) {
var latlng = new google.maps.LatLng(coords.latitude, coords.longitude);
var myOptions = {
zoom: 16,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var marker = new google.maps.Marker({
position: latlng,
map: map,
});
$('geo_location').innerHTML = coords.latitude + ',' + coords.longitude;
}, function() {
$('geo_location').innerHTML = 'Not supported';
});
} else {
$('geo_location').innerHTML = 'Not supported';
}
Cela ne fonctionnait pas sur mon Android 2.4, le problème a été résolu en permettant à l'emplacement des réseaux sans fil, outre le GPS (ne fonctionnait pas avec seulement GPS) P>
Paramètres -> Emplacement et confidentialité -> Activer les réseaux sans fil. p>
J'avais ce problème et je pense que c'était parce que le pouvoir sur l'appareil était faible. L'a chargé et le problème est parti. P>