utilisateurs de géolocalisation via html5 et javascript
Je suis en train d'obtenir les utilisateurs de géolocalisation via le html5 la géolocalisation de l'api, et j'utilise le bout de code suivant:
if (navigator.geolocation) {
var timeoutVal = 10 * 1000 * 1000;
navigator.geolocation.getCurrentPosition(
displayPosition,
displayError,
{ enableHighAccuracy: true, timeout: timeoutVal, maximumAge: 0 }
);
}
else {
//DO SOME STUFF HERE
}
function displayPosition(position) {
//configuration
var myZoom = 12;
var myMarkerIsDraggable = true;
var myCoordsLenght = 6;
var defaultLat = position.coords.latitude;
var defaultLng = position.coords.longitude;
document.getElementById('latitude').value = defaultLat;
document.getElementById('longitude').value = defaultLng;
/*
1. creates the map
2. zooms
3. centers the map
4. sets the map’s type
*/
var map = new google.maps.Map(document.getElementById('canvas'), {
zoom: myZoom,
center: new google.maps.LatLng(defaultLat, defaultLng),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
});
//centers the map on markers coords
map.setCenter(myMarker.position);
//adds the marker on the map
myMarker.setMap(map);
}
function displayError(error) {
var errors = {
1: 'Permission denied',
2: 'Position unavailable',
3: 'Request timeout'
};
alert("Error: " + errors[error.code]);
}
});
Le problème avec cette approche est que, quelques utilisateurs ont constaté qu'il est difficile à utiliser. Quelques fois, ils ont cliqué Refuser au lieu de Permettre et fixer sur l'écran. Donc, à partir de la convivialité point de vue, je pense qu'une bonne approche serait:
- Leur demander la permission.
- Attendre 3 secondes, si ils cliquez sur refuser ou de ne pas répondre, d'utiliser la propriété intellectuelle pour montrer la géolocalisation sur la carte.
Comment puis-je accomplir la deuxième étape de mon ci-dessus des extraits.
S'il vous plaît laissez-moi savoir, merci!
Cependant, ce serait une meilleure façon de gérer
Est votre gestionnaire d'erreur (
displayError()
) n'est pas appelée lorsque l'utilisateur clique sur Refuser, ou lorsque la demande de fois? Si elle est appelé (comme il se doit), c'est là que vous aimeriez faire votre deuxième étape (utiliser l'IP de l'utilisateur à faire de géolocalisation).OriginalL'auteur whatf | 2013-02-01
Vous devez vous connecter pour publier un commentaire.
Voici un script (geolocator.js) j'ai écrit il y a quelques temps et mis à jour récemment.
Mise à jour: Geolocator v2 est sorti.
Caractéristiques:
pays, code pays, code postal, etc...)
Voir un démo.
Voir de la documentation de l'API.
Utilisation:
Exemple De Sortie:
OriginalL'auteur
Ensuite, vous devez utiliser une géolocalisation ip de l'api comme celui-ci:
http://freegeoip.net/static/index.html
OriginalL'auteur cliffbarnes
Ok, donc ce n'est pas un code de réponse, plus d'une Expérience Utilisateur de réponse.
À partir d'un UX point de vue, la première chose qui ressort est le manque d'informations que vous proposez avant de déclencher le navigateur de leur demander la permission.
Je vous suggère d'avoir une sorte de superposition de la zone de montrer une capture d'écran (avec une flèche) montrer "où" sur l'écran qu'ils vont devenir demandé la permission. Vous pouvez aussi profiter de l'occasion pour leur dire ce qui va se produire si ils refusent l'autorisation ou de ne pas accepter dans un délai de 10 secondes (c'est à dire. où ils ignorer l'invite de la barre).
Je vous suggère de ne pas défaut à l'affichage de l'adresse IP, car ils sont essentiellement "pourrait être en disant:" je ne suis pas d'accord pour vous laisser savoir où j'en suis. Ensuite, vous montrera une grande carte de l'endroit où ils sont, ce qui peut freak un peu de gens qui ont cliqué nier! En outre, il peut être très imprécis.
L'idée de "ne demandez pas la permission de demander pardon", peuvent travailler dans des Biz dev, mais pas dans l'INTERFACE utilisateur comme ils ne reviendront pas.
Je voudrais vous demander si vous avez vraiment besoin de grande précision de trop, car il sera le drain de la batterie de l'utilisateur, prendre plus de temps, et ne peut pas vous donner beaucoup plus pour votre argent, surtout si vous avez seulement besoin de savoir vaguement où ils sont. Vous pouvez toujours l'appeler de nouveau plus tard pour une lecture plus précise si vous en avez besoin.
La notion de timing si ils ne sont pas cliquez sur autoriser ou de refuser pourrait être réalisé avec un setTimeout. Donc, une fois qu'ils cliquent sur "Ok je suis prêt à cliquez sur autoriser" sur votre superposition de la boîte, coup d'envoi à un délai d'attente et, si elle ne finit délai d'attente puis faire ce que vous leur avez dit que vous feriez dans l'étape ci-dessus.
En utilisant cette méthode, vous force à l'utilisateur d'autoriser ou de refuser(ignorer),-la façon dont il met le contrôle de retour dans votre cour, et de garder l'utilisateur totalement informés.
Bien que ce n'est pas un code de réponse spécifique, il est clair à partir de votre JS que "le code de la mise en œuvre de l'aide" n'est pas vraiment la question ici. J'espère que si rien d'autre, cela vous arrive de penser un peu plus à propos de votre Expérience Utilisateur.
J'ai fait une évaluation sur quelques gratuit IP pour les services de Géolocalisation là et par rapport à leur exactitude sur une carte. Vous pouvez le vérifier ici si votre décider sur un service à utiliser: svignara.github.com/geolocation.html Vous pouvez vérifier mon code sur github pour voir comment faire de l'ajax demandes pour ces services.
OriginalL'auteur Rick Hurst
regardez cette tutsplus exemple http://mobile.tutsplus.com/tutorials/mobile-web-apps/html5-geolocation/
OriginalL'auteur Shushant
Cela, peut-être vous aider:
http://jsfiddle.net/sandesh2302/FghFZ/
J'ai utilisé pour mon stuff, il a bien fonctionné.
Ex:
OriginalL'auteur StackedFlow
Vous pouvez utiliser ce service en ligne pour obtenir le lat gnl facilement:
http://dev.maxmind.com/geoip/javascript
Concernant le délai, je ne pense pas qu'il y a une manière d'interférer avec les navigateurs autorisation mécanisme (comme dans, pour fermer cette autorisation popup après un certain nombre de secondes) - bien que je serais heureux de les avoir tort. Ce que vous pourriez faire serait de mettre une minuterie et après trois secondes, obtenir l'adresse IP en fonction de la géolocalisation et de l'ensemble de la carte (ou de rafraîchir la page après 3 secondes, et de définir un cookie, ce qui déclenche l'IP en fonction de geo et pas le HTML5 geo, mais c'est un peu plus haut, si vous me demandez).
Puis, si ils donnent l'autorisation, il serait d'actualisation de la carte avec la géolocalisation HTML5 (qui devrait être beaucoup plus précis). Vous pouvez également encapsuler l'IP geo de secours dans une fonction et l'utiliser s'ils n'ont pas de géolocalisation HTML5 ou ils ont frappé refuser.
Ici un violon:
http://jsfiddle.net/mfNCn/1/
Voici le rough cut du violon:
(J'hésite à mettre l'ensemble du code chunk sur ici, car c'est assez long, afin de vérifier les violons pour le repos et la pleine mise en œuvre)
OriginalL'auteur hejhi
Si il y a un délai d'attente ou de l'utilisateur refuse la demande, je voudrais définir un emplacement par défaut comme New York, NY (40.7142, -74.0064). Si l'utilisateur refuse une demande, ils doivent aussi s'attendre à ce que vous ne connaissez pas leur emplacement afin de choisir un intelligible par défaut est la meilleure chose suivante.
À l'aide d'un défaut sans changer votre code beaucoup peut être accompli en appelant
displayPosition({coords: {latitude: 40.7142, longitude: -74.0064}})
à deux endroits:Sur http://nearbytweets.com - je utiliser une "file d'attente" de fonctions pour trouver l'emplacement d'un utilisateur, une boucle dans la file d'attente jusqu'à ce que l'un d'entre eux trouve un emplacement valide. La dernière fonction retourne New York, NY, ce qui signifie que toutes les autres tentatives ont échoué. Voici un exemple de code légèrement modifié:
Voici ce que chaque position_finder n':
OriginalL'auteur Brian Cray
À partir de l'INTERFACE utilisateur de point de vue, je voudrais suivre ces étapes:
A) montrer une belle zone de texte expliquant ce qui va se passer (I. e". le navigateur va vous demander de vous accorder une autorisation', 'cliquez sur autoriser", etc) et en demandant d'appuyer sur un bouton pour passer
B) l'affichage de la carte comme vous le faites maintenant
OriginalL'auteur aquauser