GG Maps API : suggestion de villes

  • Auteur de la discussion Auteur de la discussion rudddy
  • Date de début Date de début
WRInaute passionné
Bonjour,

Avec l'API v3 de GG Maps, je cherche à améliorer ma géolocalisation.

je m'explique : quand on tape par exemple montigny, il existe une multitude de montigny en France

Je souhaiterais une suggestion de tous les montingy existants (avec le CP ou le département)

j'avais cela avec l'ancienne version de l'API :

Code:
function showAddress()
      {
      document.getElementById('p').value='';
      document.getElementById('save').disabled=true;

      var adresse = document.getElementById("adresse_MR").value;
      geo.getLocations(adresse, function (result)
         {
         map.clearOverlays();
         // ======== REPONSE(S) =========
         if (result.Status.code == G_GEO_SUCCESS)
            {
            // ======== Multi réponses =========
            if (result.Placemark.length > 1)
               {
               document.getElementById("message").innerHTML = "Vous avez voulu dire :";
               for (var i=0; i<result.Placemark.length; i++)
                  {
                  var p = result.Placemark[i].Point.coordinates;
                  document.getElementById("message").innerHTML += "<br>"+(i+1)+"- <a href='javascript:place(" +p[1]+","+p[0]+")'>"+ result.Placemark[i].address+"</a>";
                  }
               }
            // ======== Simple réponse =========
            else
               {
               p = result.Placemark[0].Point.coordinates;
               document.getElementById('returned_adresse').innerHTML=result.Placemark[0].address;
               place(p[1],p[0]);
               }
            }
         // ====== ERREUR ======
         else alert('Erreur : Code ' + result.Status.code);
         });
      }
   }

comment faire l'équivalent avec la v3 de l'API. pour l'instant j'ai cela :

Code:
function cherchePoint() {
    var address = document.getElementById("lieu").value + ', France';
    if (geocoder) {
      geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
          map.setCenter(results[0].geometry.location);
          var marker = new google.maps.Marker({
              map: map, 
              position: results[0].geometry.location
          });
		  map.setZoom(12);
        } else {
          alert("Geocode was not successful for the following reason: " + status);
        }
      });
    }
  }

merci à vous
 
WRInaute passionné
comment as tu ne pas le voir ? tu es vraiment impardonnable :twisted:

allez une reco :D

sinon merci pour le lien je file l'implémenter (sauf que ca me soule en jquery :-()
 
WRInaute accro
Le result du geocoder étant assez complexe, j'ai fait dû faire une petite fonction JS qui parse les "results" du geocoder pour retourner le champ qu'on veux: city, postal_code,...

http://code.google.com/intl/fr/apis/maps/documentation/geocoding/index ... ml#Results

Code:
function address_component(results, address_type, name_type){
	var address_type = (address_type == null) ? 'country' : address_type;
	var name_type = (name_type == null) ? 'long_name' : name_type;

	if(results.length>0){
		var res = results[0];
		for(i=0; i<res.address_components.length; i++){
			for(j=0; j<res.address_components[i].types.length; j++){
				if(res.address_components[i].types[j] == address_type){
					if(res.address_components[i][name_type]){
						return res.address_components[i][name_type];
					}
				}
			}
		}
	}
}

Et avec cette fonction j'ai pu faire:
Code:
var country = address_component(results, 'country', 'short_name');
var city = address_component(results, 'locality', 'long_name');
country prend la valeur (BE, FR, ...)

Tu peux regarder dans le source du formulaire de mon site d'annonce.

Edit:
En faisant le test avec "montigny", ça ne renvoie que "Montigny-le-Bretonneux, France".
Pourtant si on va sur http://maps.google.be/ et qu'on tape "montigny" ça en renvoie 10 en France.
Je vais regarder pour savoir ce qu'il faut changer pour avoir le même comportement que sur Google Maps.

Edit 2:
Même avec une requête HTTP vers l'API Geocoding (v3), "Montigny, France" ne retourne qu'un résultat :?
http://maps.google.com/maps/api/geocode/xml?sensor=false&address=monti ... ,%20france
 
Nouveau WRInaute
Bonjour spout ! bonjour a tous !

Je suis très régulièrement sur wri, mais je n'ai jamais postée sur le forum, il y a un début a tout :) !

Je relance cette conversation car je me suis lancée dans l’auto complétion des villes en france en utilisant gg v3 maps.

Quel est mon besoin ?
Lorsqu'on écrit le nom de sa ville, permette a la suggestion d'afficher : la ville, le code postal. et de récupérer les coordonnées (longitude et latitude dans un input hidden)

voila ce que j'ai pour le moment :

Code:
 function initialize() {
	
	 	
	var defaultBounds = new google.maps.LatLngBounds(
	  new google.maps.LatLng(-33.8902, 151.1759),
	  new google.maps.LatLng(-33.8474, 151.2631));	
	
	var input = document.getElementById('searchTextField');
		
	var options = {
	  types: ['geocode'],
	  componentRestrictions: {country: 'fr'}
	};
	
	autocomplete = new google.maps.places.Autocomplete(input, options);	  
	
}
google.maps.event.addDomListener(window, 'load', initialize)

Pour une ville donné, j'ai bien, une suggestion de villes + pays.. je voudrais villes + code postal.



Si quelqu'un à des idées, à vos claviers ? ( sisi aller :) )
Bises!
 
Nouveau WRInaute
Tout d'abord merci d'avoir répondu :)

Oui j'avais déjà appliquée ta fonction, et en fait quand je debug, la fonction n'est pas reconnue.

voila mon code

Code:
function initialize() {
	
	 debugger;
	var defaultBounds = new google.maps.LatLngBounds(
	  new google.maps.LatLng(-33.8902, 151.1759),
	  new google.maps.LatLng(-33.8474, 151.2631));	
	
	var input = document.getElementById('searchTextField');
		
	var options = {
	  types: ['geocode'],
	  componentRestrictions: {country: 'fr'}
	};
	
	autocomplete = new google.maps.places.Autocomplete(input, options);	  
	
	function address_component(results, address_type, name_type){
		   var address_type = (address_type == null) ? 'country' : address_type;
		   var name_type = (name_type == null) ? 'long_name' : name_type;

		   if(results.length>0){
		      var res = results[0];
		      for(i=0; i<res.address_components.length; i++){
		         for(j=0; j<res.address_components[i].types.length; j++){
		            if(res.address_components[i].types[j] == address_type){
		               if(res.address_components[i][name_type]){
		                  return res.address_components[i][name_type];
		               }
		            }
		         }
		      }
		   }
		}

		 var country = address_component(autocomplete, 'country', 'short_name');
		 var city = address_component(autocomplete, 'locality', 'long_name');
	
}
google.maps.event.addDomListener(window, 'load', initialize)

Et lors du debug, le results.length ne renvoi aucune valeurs..

:(
 
Nouveau WRInaute
j'ai tenter beaucoup de chose.. mais je n'arrive pas a obtenir le code postal dans l’auto complétion au lieu du pays lorsque l'on tape une ville..


Je n'ai plus de piste ..
 
Nouveau WRInaute
Bonjour à tous,

Pour comprendre la situation dans laquelle je sais, je met a dispo un petit JS BIN : http://jsbin.com/etohiy/1/edit

1er cas :

Lorsqu'on tape 72560, on voit bien Changé, France (Je veux supprimé le mot France..)

Lorsqu'on tape Changé, on voit :
Changé, France
Changé, France
> le résultat souhaité serait d'avoir :
Changé, 72560
Changé, 53810

si quelqu'un à une idée.. venez interagir avec nous ;)
 
Discussions similaires
Haut