Géolocalisation
Le
geolocationobjet fournit l'accès aux données de localisation basée sur le capteur du dispositif GPS ou déduit de signaux de réseaux.
Geolocationfournit des informations sur l'emplacement de l'appareil, tels que la latitude et la longitude. Des sources communes d'information incluent système de positionnement Global (GPS) et l'emplacement déduit de signaux de réseaux tels qu'adresse IP, RFID, WiFi et Bluetooth MAC adresses et GSM/CDMA cell ID. Il n'y a aucune garantie que l'API retourne la position réelle de l'appareil.
Cette API est basée sur la Spécification de W3C Geolocation APIet s'exécute uniquement sur les périphériques qui ne fournissent déjà une implémentation.
Remarque importante de la vie privée : Collecte et utilisation des données de géolocalisation soulève des questions importantes de la vie privée. Politique de confidentialité de votre application devrait discuter de comment l'application utilise les données de géolocalisation, si elle est partagée avec d'autres parties et le niveau de précision des données (par exemple, grossière et fine, ZIP code niveau, etc.). Données de géolocalisation sont généralement considéré comme sensibles car elle peut révéler l'endroit où se trouve une personne et, si stocké, l'histoire de ses voyages. Par conséquent, en plus de la politique de confidentialité de votre application, vous devez envisager fortement fournissant un avis de juste-à-temps avant votre application pour accéder aux données de géolocalisation (si le système d'exploitation de périphérique n'est pas faire déjà). Cet avis doit fournir les mêmes renseignements susmentionnées, ainsi que d'obtenir l'autorisation de l'utilisateur (par exemple, en présentant des choix OK et Non merci). Pour plus d'informations, consultez le Guide de la vie privée.
Méthodes
Arguments
Objets (lecture seule)
Accéder à la fonctionnalité
Depuis la version 3.0, Cordova implémente API au niveau du périphérique comme les plugins. Utiliser de la CLI plugin commande, décrite dans l'Interface de ligne de commande, d'ajouter ou de supprimer cette fonction pour un projet :
$ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git
$ cordova plugin rm org.apache.cordova.core.geolocation
Ces commandes s'appliquent à toutes les plates-formes ciblées, mais modifier les paramètres de configuration spécifiques à la plateforme décrites ci-dessous :
-
Android
(in app/res/xml/config.xml) <feature name="Geolocation"> <param name="android-package" value="org.apache.cordova.GeoBroker" /> </feature> (in app/AndroidManifest.xml) <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> -
BlackBerry WebWorks
(in www/plugins.xml) <feature name="Geolocation"> <param name="blackberry-package" value="org.apache.cordova.geolocation.Geolocation" /> </feature> (in www/config.xml) <rim:permissions> <rim:permit>read_geolocation</rim:permit> </rim:permissions> -
iOS (en
config.xml)<feature name="Geolocation"> <param name="ios-package" value="CDVLocation" /> </feature> -
Windows Phone (en
Properties/WPAppManifest.xml)<Capabilities> <Capability Name="ID_CAP_LOCATION" /> </Capabilities>Référence : manifeste d'Application pour Windows Phone
Certaines plates-formes peuvent prendre en charge cette fonctionnalité sans nécessiter aucune configuration spéciale. Voir plate-forme prise en charge pour une vue d'ensemble.
geolocation.getCurrentPosition
Retourne la position actuelle de l'appareil comme un Position objet.
navigator.geolocation.getCurrentPosition(geolocationSuccess,
[geolocationError],
[geolocationOptions]);
Paramètres
geolocationSuccess: la fonction de rappel qui est passée de la position actuelle.
geolocationError: (facultatif) la fonction de rappel qui s'exécute si une erreur survient.
geolocationOptions: (facultatif) les options de géolocalisation.
Description
geolocation.getCurrentPositionest une fonction asynchrone. Elle retourne la position actuelle de l'appareil à la geolocationSuccess rappel avec un Position objet comme paramètre. Si une erreur se produit, le geolocationError rappel est passé un PositionError objet.
Plates-formes prises en charge
- Android
- BlackBerry WebWorks (OS 5.0 et plus)
- iOS
- Paciarelli
- Windows Phone 7 et 8
- Windows 8
Petit exemple
// onSuccess Callback
// This method accepts a Position object, which contains the
// current GPS coordinates
//
var onSuccess = function(position) {
alert('Latitude: ' + position.coords.latitude + '\n' +
'Longitude: ' + position.coords.longitude + '\n' +
'Altitude: ' + position.coords.altitude + '\n' +
'Accuracy: ' + position.coords.accuracy + '\n' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\n' +
'Heading: ' + position.coords.heading + '\n' +
'Speed: ' + position.coords.speed + '\n' +
'Timestamp: ' + position.timestamp + '\n');
};
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
navigator.geolocation.getCurrentPosition(onSuccess, onError);
Exemple complet
<!DOCTYPE html>
<html>
<head>
<title>Device Properties Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
// onSuccess Geolocation
//
function onSuccess(position) {
var element = document.getElementById('geolocation');
element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' +
'Longitude: ' + position.coords.longitude + '<br />' +
'Altitude: ' + position.coords.altitude + '<br />' +
'Accuracy: ' + position.coords.accuracy + '<br />' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br />' +
'Heading: ' + position.coords.heading + '<br />' +
'Speed: ' + position.coords.speed + '<br />' +
'Timestamp: ' + position.timestamp + '<br />';
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
</script>
</head>
<body>
<p id="geolocation">Finding geolocation...</p>
</body>
</html>
geolocation.watchPosition
Montres pour faire modifier la position actuelle de l'appareil.
var watchId = navigator.geolocation.watchPosition(geolocationSuccess,
[geolocationError],
[geolocationOptions]);
Paramètres
geolocationSuccess: la fonction de rappel qui est passée de la position actuelle.
geolocationError: (en option) la fonction de rappel qui s'exécute si une erreur survient.
geolocationOptions: options (facultatif) la géolocalisation.
Retours
-
Chaîne: retourne un id de montre qui fait référence à l'intervalle de position montre. L'id de la montre doit être utilisé avec
geolocation.clearWatchd'arrêter de regarder pour les changements de position.
Description
geolocation.watchPositionest une fonction asynchrone. Elle retourne la position actuelle de l'appareil lorsqu'un changement de position est détecté. Lorsque l'appareil récupère un nouvel emplacement, le geolocationSuccess rappel s'exécute avec un Position objet comme paramètre. Si une erreur se produit, le geolocationError rappel s'exécute avec un PositionError objet comme paramètre.
Plates-formes prises en charge
- Android
- BlackBerry WebWorks (OS 5.0 et plus)
- iOS
- Paciarelli
- Windows Phone 7 et 8
- Windows 8
Petit exemple
// onSuccess Callback
// This method accepts a `Position` object, which contains
// the current GPS coordinates
//
function onSuccess(position) {
var element = document.getElementById('geolocation');
element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' +
'Longitude: ' + position.coords.longitude + '<br />' +
'<hr />' + element.innerHTML;
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
// Options: throw an error if no update is received every 30 seconds.
//
var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { timeout: 30000 });
Exemple complet
<!DOCTYPE html>
<html>
<head>
<title>Device Properties Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
var watchID = null;
// device APIs are available
//
function onDeviceReady() {
// Throw an error if no update is received every 30 seconds
var options = { timeout: 30000 };
watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);
}
// onSuccess Geolocation
//
function onSuccess(position) {
var element = document.getElementById('geolocation');
element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' +
'Longitude: ' + position.coords.longitude + '<br />' +
'<hr />' + element.innerHTML;
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
</script>
</head>
<body>
<p id="geolocation">Watching geolocation...</p>
</body>
</html>
geolocation.clearWatch
Arrêter de regarder pour les modifications à l'emplacement de l'appareil référencé par le watchID paramètre.
navigator.geolocation.clearWatch(watchID);
Paramètres
-
watchID: l'id de la
watchPositionintervalle à effacer. (String)
Description
Le geolocation.clearWatch cesse de regarder les modifications apportées à l'emplacement de l'appareil en désactivant le geolocation.watchPosition référencé parwatchID.
Plates-formes prises en charge
- Android
- BlackBerry WebWorks (OS 5.0 et plus)
- iOS
- Paciarelli
- Windows Phone 7 et 8
- Windows 8
Petit exemple
/ / Options : suivi des modifications dans la position et utilise le plus / / exacte position méthode d'acquisition disponible.
//
var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { enableHighAccuracy: true });
// ...later on...
navigator.geolocation.clearWatch(watchID);
Exemple complet
<!DOCTYPE html>
<html>
<head>
<title>Device Properties Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
var watchID = null;
// device APIs are available
//
function onDeviceReady() {
// Get the most accurate position updates available on the
// device.
var options = { enableHighAccuracy: true };
watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);
}
// onSuccess Geolocation
//
function onSuccess(position) {
var element = document.getElementById('geolocation');
element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' +
'Longitude: ' + position.coords.longitude + '<br />' +
'<hr />' + element.innerHTML;
}
// clear the watch that was started earlier
//
function clearWatch() {
if (watchID != null) {
navigator.geolocation.clearWatch(watchID);
watchID = null;
}
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
</script>
</head>
<body>
<p id="geolocation">Watching geolocation...</p>
<button onclick="clearWatch();">Clear Watch</button>
</body>
</html>
Coordonnées
Un ensemble de propriétés qui décrivent les coordonnées géographiques d'une position.
Propriétés
latitude: Latitude en degrés décimaux. (Nombre)
longitude: Longitude en degrés décimaux. (Nombre)
altitude: hauteur de la position en mètres au-dessus de l'ellipsoïde. (Nombre)
précision: degré de précision des coordonnées latitude et longitude en mètres. (Nombre)
altitudeAccuracy: niveau d'exactitude de la coordonnée de l'altitude en mètres. (Nombre)
heading: sens de marche, indiquée en degrés comptage dans le sens horaire par rapport au nord vrai. (Nombre)
vitesse: vitesse actuelle de l'appareil, indiquée en mètres par seconde. (Nombre)
Description
Le Coordinates objet est attaché à la Position objet qui n'existe pas de fonctions de rappel dans les requêtes pour la position actuelle.
Plates-formes prises en charge
- Android
- BlackBerry WebWorks (OS 5.0 et plus)
- iOS
- Paciarelli
- Windows Phone 7 et 8
- Windows 8
Petit exemple
// onSuccess Callback
//
var onSuccess = function(position) {
alert('Latitude: ' + position.coords.latitude + '\n' +
'Longitude: ' + position.coords.longitude + '\n' +
'Altitude: ' + position.coords.altitude + '\n' +
'Accuracy: ' + position.coords.accuracy + '\n' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\n' +
'Heading: ' + position.coords.heading + '\n' +
'Speed: ' + position.coords.speed + '\n' +
'Timestamp: ' + position.timestamp + '\n');
};
// onError Callback
//
var onError = function() {
alert('onError!');
};
navigator.geolocation.getCurrentPosition(onSuccess, onError);
Exemple complet
<!DOCTYPE html>
<html>
<head>
<title>Geolocation Position Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
// Display `Position` properties from the geolocation
//
function onSuccess(position) {
var div = document.getElementById('myDiv');
div.innerHTML = 'Latitude: ' + position.coords.latitude + '<br/>' +
'Longitude: ' + position.coords.longitude + '<br/>' +
'Altitude: ' + position.coords.altitude + '<br/>' +
'Accuracy: ' + position.coords.accuracy + '<br/>' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br/>' +
'Heading: ' + position.coords.heading + '<br/>' +
'Speed: ' + position.coords.speed + '<br/>';
}
// Show an alert if there is a problem getting the geolocation
//
function onError() {
alert('onError!');
}
</script>
</head>
<body>
<div id="myDiv"></div>
</body>
</html>
Quirks Android
altitudeAccuracy: ne pas pris en charge par les appareils Android, retournull.
Position
Contient Position coordonnées et timestamp, créé par l'API de géolocalisation.
Propriétés
CoOrds: un système de coordonnées géographiques. (Coordonnées)
timestamp: horodatage de création pour
coords. (Date)
Description
Le Position objet est créé et peuplé de Cordova et retourné à l'utilisateur via une fonction de rappel.
Plates-formes prises en charge
- Android
- BlackBerry WebWorks (OS 5.0 et plus)
- iOS
- Paciarelli
- Windows Phone 7 et 8
- Windows 8
Petit exemple
// onSuccess Callback
//
var onSuccess = function(position) {
alert('Latitude: ' + position.coords.latitude + '\n' +
'Longitude: ' + position.coords.longitude + '\n' +
'Altitude: ' + position.coords.altitude + '\n' +
'Accuracy: ' + position.coords.accuracy + '\n' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\n' +
'Heading: ' + position.coords.heading + '\n' +
'Speed: ' + position.coords.speed + '\n' +
'Timestamp: ' + position.timestamp + '\n');
};
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
navigator.geolocation.getCurrentPosition(onSuccess, onError);
Exemple complet
<!DOCTYPE html>
<html>
<head>
<title>Device Properties Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
// onSuccess Geolocation
//
function onSuccess(position) {
var element = document.getElementById('geolocation');
element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' +
'Longitude: ' + position.coords.longitude + '<br />' +
'Altitude: ' + position.coords.altitude + '<br />' +
'Accuracy: ' + position.coords.accuracy + '<br />' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br />' +
'Heading: ' + position.coords.heading + '<br />' +
'Speed: ' + position.coords.speed + '<br />' +
'Timestamp: ' + position.timestamp + '<br />';
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
</script>
</head>
<body>
<p id="geolocation">Finding geolocation...</p>
</body>
</html>
PositionError
A PositionError objet est passé à la geolocationError rappel lorsqu'une erreur survient.
Propriétés
code: l'un des codes d'erreur prédéfinis énumérés ci-dessous.
message: message d'erreur décrivant les détails de l'erreur rencontrée.
Constantes
PositionError.PERMISSION_DENIEDPositionError.POSITION_UNAVAILABLEPositionError.TIMEOUT
Description
Le PositionError objet est passé à la geolocationError fonction de rappel lorsqu'une erreur se produit avec géolocalisation.
PositionError.PERMISSION_DENIED
Retourné lorsque l'utilisateur n'autorise pas de votre application extraire des informations de position. Cela dépend de la plate-forme.
PositionError.POSITION_UNAVAILABLE
Retourné lorsque le périphérique n'est pas en mesure de récupérer une position. En général cela signifie que l'appareil n'a aucune connectivité réseau et/ou ne peut pas obtenir un correctif de satellite.
PositionError.TIMEOUT
Retourné lorsque le périphérique n'est pas en mesure de récupérer une position dans le délai précisé dans la geolocationOptions ' timeout propriété. Lorsqu'il est utilisé avec geolocation.watchPosition , cette erreur pourrait être transmise à la geolocationError rappel chaque timeout millisecondes.
geolocationSuccess
Fonction de rappel de l'utilisateur qui s'exécute lorsqu'une position de géolocalisation sera disponible (lorsqu'elle est appelée de geolocation.getCurrentPosition ), ou lorsque la position de change (lorsqu'il est appelé pargeolocation.watchPosition).
function(position) {
// Do something
}
Paramètres
- position: la position de géolocalisation retournée par le périphérique. (Position)
Exemple
function geolocationSuccess(position) {
alert('Latitude: ' + position.coords.latitude + '\n' +
'Longitude: ' + position.coords.longitude + '\n' +
'Altitude: ' + position.coords.altitude + '\n' +
'Accuracy: ' + position.coords.accuracy + '\n' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\n' +
'Heading: ' + position.coords.heading + '\n' +
'Speed: ' + position.coords.speed + '\n' +
'Timestamp: ' + position.timestamp + '\n');
}
geolocationError
Fonction de rappel de l'utilisateur qui s'exécute lorsqu'une erreur se produit pour les fonctions de géolocalisation.
function(error) {
// Handle the error
}
Paramètres
- erreur: l'erreur retournée par le périphérique. (PositionError)
geolocationOptions
Paramètres optionnels pour personnaliser la récupération de la géolocalisationPosition.
{maximumAge : 3000, délai d'attente : 5000, enableHighAccuracy : true} ;
Options
enableHighAccuracy: fournit une indication que l'application doit les meilleurs résultats possibles. Par défaut, l'appareil tente de récupérer un
Positionà l'aide de méthodes basées sur le réseau. Définition de cette propriététrueindique à l'infrastructure d'utiliser des méthodes plus précises, telles que la localisation par satellite. (Boolean)délai d'attente: la longueur maximale de temps (en millisecondes) qui peut passer de l'appel à
geolocation.getCurrentPositionougeolocation.watchPositionjusqu'à ce que le correspondantgeolocationSuccessrappel s'exécute. Si legeolocationSuccessrappel n'est pas appelé dans ce délai, legeolocationErrorrappel est passé unPositionError.TIMEOUTcode d'erreur. (Notez que lorsqu'il est utilisé en conjonction avecgeolocation.watchPosition, legeolocationErrorrappel pourrait être appelé sur un intervalle toustimeoutmillisecondes!) (Nombre)maximumAge: accepter un poste en cache dont l'âge ne dépasse pas le délai en millisecondes. (Nombre)
Quirks Android
Émulateurs Android 2.x ne pas retournent un résultat de géolocalisation, à moins que le enableHighAccuracy option est définie surtrue.