IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Google Discussion :

Géolocalisation - position dans un polygone


Sujet :

APIs Google

  1. #1
    Invité
    Invité(e)
    Par défaut Géolocalisation - position dans un polygone
    Bonjour,

    Pour un projet, on me demande d’affichage une page en fonction de la position gps de l’internaute suivant une zone géographique définis.

    Pour donnée un exemple il faut qu'en fonction de mon emplacement GPS s'affiche la liste la page des conseillers municipaux de l'arrondissement ou je me trouve.

    Bien que je sache que les positions ne soit pas toujours super précise, comment mettre en œuvre ce projet ?

    Je pense qu'il faut que j'utilise la fonction polygone pour définir chaque arrondissement. Mais ensuite comment faire pour qu'en fonction de la possition retourné (long/lat) je sache que la personne est dans tel ou tel arrondissement ?

    Merci pour votre aide

  2. #2
    Membre chevronné

    Avatar de nicosmash
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2012
    Messages : 395
    Points : 2 107
    Points
    2 107
    Par défaut
    Bonjour,

    Voici un bout de code que j'utilise pour géolocaliser :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    <script>
     
    // Position par défaut
    var centerpos = new google.maps.LatLng(48.579400,7.7519);
     
    // Ansi que des options pour la carte, centrée sur latlng
    var optionsGmaps = {
    	center:centerpos,
    	navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
    	mapTypeId: google.maps.MapTypeId.ROADMAP,
    	zoom: 15
    };
     
    // Initialisation de la carte avec les options
    var map = new google.maps.Map(document.getElementById("map"), optionsGmaps);
     
    if(navigator.geolocation) {
     
    	// Fonction de callback en cas de succès
    	function affichePosition(position) {
     
    		var infopos = "Position déterminée : <br>";
    		infopos += "Latitude : "+position.coords.latitude +"<br>";
    		infopos += "Longitude: "+position.coords.longitude+"<br>";
    		infopos += "Altitude : "+position.coords.altitude +"<br>";
    		document.getElementById("maposition").innerHTML = infopos;
     
    		// On instancie un nouvel objet LatLng pour Google Maps
    		var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
     
    		// Ajout d'un marqueur à la position trouvée
    		var marker = new google.maps.Marker({
    			position: latlng,
    			map: map,
    			title:"Vous êtes ici"
    		});
     
    		map.panTo(latlng);
     
    	}
     
    	// Fonction de callback en cas d’erreur
    	function erreurPosition(error) {
    		var info = "Erreur lors de la géolocalisation : ";
    		switch(error.code) {
    		case error.TIMEOUT:
    			info += "Timeout !";
    		break;
    		case error.PERMISSION_DENIED:
    			info += "Vous n’avez pas donné la permission";
    		break;
    		case error.POSITION_UNAVAILABLE:
    			info += "La position n’a pu être déterminée";
    		break;
    		case error.UNKNOWN_ERROR:
    			info += "Erreur inconnue";
    		break;
    		}
    		document.getElementById("maposition").innerHTML = info;
    	}
     
    	navigator.geolocation.getCurrentPosition(affichePosition,erreurPosition);
     
    } else {
     
    	alert("Ce navigateur ne supporte pas la géolocalisation");
     
    }
     
    </script>

    Créer un conteneur :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="id_conteneur_map" style="width:640px; height:480px"></div>

    Charger l'API Google maps :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="http://maps.google.com/maps/api/js?sensor=false"></script>

    Et le plus important, la documentation :
    http://www.w3schools.com/html/html5_geolocation.asp

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Points : 98
    Points
    98
    Par défaut
    Sinon de façon plus pratique et plus aider il existe aussi l'API du Géoportail. Dans lequel vous trouverez des tutos et exemples, pour faire ce que vous voulez.

    Voici le lien pour voir ce qu ec'est le Géoportail:
    http://www.geoportail.gouv.fr/accueil

    Et voici pour l'API du Géoportail
    http://api.ign.fr/accueil

    Pour les tutos et exemples, il suffit d'aller dans l'onglet Documentation du site api.ign.fr

    Pour finir, un forum dédié à l'api sur developpez est disponible ici
    http://www.developpez.net/forums/f12...pi-geoportail/

    Y a pas que Google Maps dans la vie . Après c'est à vous de choisir

  4. #4
    Invité
    Invité(e)
    Par défaut
    Merci pour vos réponses.

    J'ai déjà pratiqué la géoloc, en fonction d'un Cp et/ou coordonnées.
    Mais dans tous les cas c'était pour afficher les points qui se trouvait dans un rayons de N autour de l’emplacement (Lat/Long).
    C'est en gros se que tu me propose nicosmash avec se code.

    Pour se que je cherche a faire c'est plus délicat, car il faut définir un polygone.
    Bon avec les fonctions de GGmap c'est faisable, mais ensuite et c'est là que ça se complique il faut que je sache dans quel secteur est la positions.

    En gros il faudrait qu'avant l'affichage de la page je puise avoir l'info : $arrondisement = N et que j'affiche la page en question.

  5. #5
    Membre chevronné

    Avatar de nicosmash
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2012
    Messages : 395
    Points : 2 107
    Points
    2 107
    Par défaut
    Vous devez créer un tableau de points contenant l'ensemble des points (latitude, longitude).

    Exemple :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var tableauPointsDuPolygone = [
    	new google.maps.LatLng(latitude, longitude),
    	new google.maps.LatLng(latitude, longitude),
    	...
    ];

  6. #6
    Invité
    Invité(e)
    Par défaut
    Oui oui en effet, il faut créer un tableau des points composant la zone.
    Mais si j'ai 10 zones comment savoir dans la quelle je me trouve ?

  7. #7
    Membre chevronné

    Avatar de nicosmash
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2012
    Messages : 395
    Points : 2 107
    Points
    2 107
    Par défaut
    Ca fait trop de questions différentes dans le même topic (il me semble ).

    Après le mieux c'est de poser le problème sur un papier et de faire une VRAI analyse des besoins ...

    Sinon pour votre problème une boucle avec une variable zone permettant de savoir quelle zone la personne veut voir.

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Points : 74
    Points
    74
    Par défaut
    Bonjour

    peut être des réponses dans ce long topic ... modeste contribution de ma part


    http://www.developpez.net/forums/d13...donnees-terre/

  9. #9
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 070
    Points : 44 677
    Points
    44 677
    Par défaut
    Bonjour,
    il serait intéressant de connaître sur quelles villes tu veux opérer, les villes comme Paris, Lyon et Marseille possèdent le numéro d'arrondissement dans le code postal qui peux donc être récupéré lors d'un géodécodage.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par loribac Voir le message
    Bonjour

    peut être des réponses dans ce long topic ... modeste contribution de ma part

    http://www.developpez.net/forums/d13...donnees-terre/
    En effet j'avais trouvé ton topique qui est très intéressant.

    Mais comme la justement fait remarqué NoSmoking, il y a le N° de l'arrondissement dans le CP.

    Donc je suis partie dans la direction suivante :
    via les nouvelles fonction du HTML5, je récupère les coordonnées GPS (relativement précises) et via l'api de google je récupère le Code postal puis affiche la page correspondante.

    Par contre si le GPS n'est pas activé ou inactif ou si on est sur une connexion wifi, bah là les coordonnées son fournis par l'ip et le résultat est très mauvais.

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 320
    Points : 74
    Points
    74
    Par défaut
    Bonsoir

    As tu essayé d'avertir l'utilisateur que la geo est inactive ou encore mieux d’interdire l’exécution du script si pas utiliser sur un smartphone. Je te laisse ce bout de code .... si cela peux te servir


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
      <script language="JavaScript1.2">
    <!-- debut du script
    if (screen.width==800)
    location="http://www.adresse.com";
    else if (screen.width >= 800)
    location="no.php"; // exemple ici si le screen et trop grand tu renvoie sur une page ou tu  explique que cette appli est autorisée  que pour les smartPhones
    // Fin du script -->
      </script>



    Cdt

Discussions similaires

  1. Savoir si un point est inclus dans un polygone quelconque
    Par SuperBIBI dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 02/08/2005, 19h02
  2. Réponses: 5
    Dernier message: 20/02/2005, 01h14
  3. [Win32] Position dans un fichier
    Par vecchio dans le forum Windows
    Réponses: 7
    Dernier message: 22/03/2004, 16h47
  4. [GEOMETRIE] Cercle inscrit dans un polygone
    Par bebeours dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 10/02/2004, 14h18
  5. [VB6] Sauvegarder la position dans un Recordset
    Par inotna2099 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 29/04/2003, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo