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 :

Zone de précision avec l'API google map


Sujet :

APIs Google

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 49
    Points : 26
    Points
    26
    Par défaut Zone de précision avec l'API google map
    Bonjour tout le monde,

    J'ai créer deux fonctions en javascript :
    - getLatLng(adresse, maFonction) : qui exécute "maFonction" en passant en paramètre la latitude et longitude convertis en fonction de l'adresse.
    - getAdress(lat, lng, maFonction) : pareil mais avec une conversion inversée.


    Tout fonctionne bien, je voudrais seulement avoir une solution à ce problème :
    L'utilisateur entre un adresse dans une série d'input, imaginons qu'il entre le pays, la région, le département MAIS PAS la ville.
    Je voudrais avoir l'amplitude de degrés correspondant à la zone donnée, c'est à dire que (au hasard), ici, on a une zone correspondant à un département, ce département correspond à 200km, et que 200km correspond à une amplitude de 5°. Au final, je pourrai cherché tous les éléments dans ma base de donnée à +/- 5° puis les afficher...

    est ce que je suis clair ?

    Merci d'avance.


    PS : Au pire des cas, je peux prendre arbitrairement 20km pour un ville, 200km pour une région etc etc...

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 971
    Points : 44 134
    Points
    44 134
    Par défaut
    Bonsoir,
    un peu du mal a cerner le soucis.
    Lorsque tu ne mais pas de ville, il me semble que par défaut il pointe sur le centre du département, ensuite tu peux récupérer les bornes retournées.

    Compte tenu de la variété des formes et surface des départements je te souhaite bon courage pour trouver un compromis équitable.

    Sinon à toutes fins utiles Nowwis nous à laisser cette requête Villes aux alentours

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 49
    Points : 26
    Points
    26
    Par défaut
    Merci pour ton aide et pour ce lien, malheureusement mon soucis n'est pas celui ci : je cherche simplement à déterminer l'amplitude de la zone choisie en degrés.
    Tu me parle de bornes, comment puis je les obtenir ? je ne crois pas avoir vu ce type de donnée dans le retour de la fonction "geocode" !

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 49
    Points : 26
    Points
    26
    Par défaut
    Voila les fonctions (Le passage d'une fonction en paramètre est le meilleur moyen que j'ai trouvé pour utiliser geocode via une fonction car c'est asynchrone...) :

    Code : 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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    		var geocoder = new google.maps.Geocoder();
     
    		function getLatLng(adr, func)
    		{
    			if(adr != '' && geocoder)
    			{ 
    				geocoder.geocode({ address: adr }, function(points, status)
    				{
    					if(status == google.maps.GeocoderStatus.OK && points[0])
    					{
    						var coords = [ points[0].geometry.location.lat(), points[0].geometry.location.lng() ];
    						func(coords);
    					}
    					else
    					{
    						func(null);
    					}
    				});
    			}
    		}
     
    		function getAdress(lat, lng, func)
    		{
    			var latlng = new google.maps.LatLng(lat, lng);
    			geocoder.geocode({latLng: latlng}, function(results, status)
    			{
    				if(status == google.maps.GeocoderStatus.OK && results[0])
    				{
    					var street_number = null;
    					var route = null;
    					var locality = null;
    					var administrative_area_level_2 = null;
    					var administrative_area_level_1 = null;
    					var postal_code = null;
    					var country = null;
    					var elt = results[0].address_components;
    					for(i in elt)
    					{
    						if(elt[i].types[0] == 'street_number')
    							street_number = elt[i].long_name;
    						else if(elt[i].types[0] == 'route')
    							route = elt[i].long_name;
    						else if(elt[i].types[0] == 'locality')
    							locality = elt[i].long_name;
    						else if(elt[i].types[0] == 'administrative_area_level_2')
    							administrative_area_level_2 = elt[i].long_name;
    						else if(elt[i].types[0] == 'administrative_area_level_1')
    							administrative_area_level_1 = elt[i].long_name;
    						else if(elt[i].types[0] == 'postal_code')
    							postal_code = elt[i].long_name;
    						else if(elt[i].types[0] == 'country')
    							country = elt[i].long_name;
    					}
    					var adress = '';
    					if(street_number)
    						adress += street_number;
    					if(route)
    						adress += ' ' + route;
    					if(postal_code)
    						adress += ', ' + postal_code;
    					if(locality)
    						adress += ' ' + locality;
    					if(administrative_area_level_2)
    						adress += ', ' + administrative_area_level_2;
    					if(administrative_area_level_1)
    						adress += ', ' + administrative_area_level_1;
    					if(country)
    						adress += ', ' + country;
    					func(adress);
    				}
    				else
    				{
    					func(null);
    				}
    			});
    		}
     
     
     
    		var truc = function(coords)
    		{
    			if(coords)
    				alert('truc = ' + coords);
    			else
    				alert('error');
    		}
     
    		getLatLng("Paris", truc);

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 971
    Points : 44 134
    Points
    44 134
    Par défaut
    Tu me parle de bornes, comment puis je les obtenir ?
    regardes dans results[0].geometry.bounds ou viewport
    je cherche simplement à déterminer l'amplitude de la zone choisie en degrés.
    j'ai du mal à comprendre, latitude et longitude étant des angles.

Discussions similaires

  1. [Google Maps] Livre : développer avec les API Google Maps
    Par Idelways dans le forum APIs Google
    Réponses: 1
    Dernier message: 15/07/2011, 16h10
  2. Rafraichir les données XML avec l'API Google Maps
    Par olaf_le_preux dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/02/2010, 20h37
  3. Tester l'existence d'un point avec l'api google map
    Par numerodix dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/10/2008, 09h28

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