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 :

Problème de géolocalisation au-delà de 11 points [Google Maps]


Sujet :

APIs Google

  1. #1
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut Problème de géolocalisation au-delà de 11 points
    Bonjour

    Voici mon code

    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
    <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAFw0lDRKsdCra15LPvIxvehS3Kl_ZRrzIrsFqDz8GBXIeW1O52xQh3P31Xg2eTvqFRAyuOMY4dQrRQw" type="text/javascript"></script>
    
        <script type="text/javascript">
          var map = null;
          var geocoder = null;
          function load()
            {
            if (GBrowserIsCompatible())
              {
              map = new GMap2(document.getElementById("carte"));
              map.setCenter(new GLatLng(49.8, 2.4), 9);
    		   map.addControl(new GSmallMapControl());
             map.addControl(new GMapTypeControl());
    // Initialisation de l'objet "GClientGeocoder"
              geocoder = new GClientGeocoder();
    		adresse = new Array();
    		adresse.push("Celles sur Belle");adresse.push("Niort");adresse.push("Mauzé sur le Mignon");adresse.push("Secondigné sur Belle");adresse.push("Mauzé sur le Mignon");adresse.push("Le Tallud");adresse.push("Ardin");adresse.push("St Pardoux");adresse.push("St Maxire");adresse.push("Périgné");adresse.push("Exoudun");adresse.push("Gournay"); // Pour les 11 premières villes, il n'y a aucun problème
    // Appel de la fonction d'affichage de l'adresse
    			for(i=0;i<50;i++)
    			{
              	showAddress(adresse[i]);
    		  	}
              }
            }
    // Fonction de geocoding.
    // Transformation d'une adresse en coordonnées
          function showAddress(address)
            {
            if (geocoder)
              {
              geocoder.getLatLng(address, function(point)
                {
                if (!point) {alert(address + " not found");} // Adresse non connue par Google Maps
                else
                  {
                  var marker = new GMarker(point); // Initialisation d'un marker
                  map.addOverlay(marker); // Affichage du marker
                  marker.openInfoWindowHtml(address); // Affichage d'une bulle contenant l'adresse
                  }
                });
              }
            }
       </script>
    J'ai mis en rouge la partie qui posait problème. Lorsque que je mets 11 villes dans mon array "adresse", il n'y a aucun problème, maps me les trouver sans aucun problème. A partir de la 12 ème, il ne me la reconnait plus, et me mets "[ville] not found" comme prévu dans le code, s'il ne la trouve pas. Cependant lorsque je passe le nom de cette ville au début de mon array "adresse", il me la trouve sans problème.

    Qu'elle est l'explication possible ...

    Merci d'avance

    Ps : J'ai eu beau cherché, je n'ai pas trouver les mêmes fonctions pour utiliser OpenStreetMap. Il y a t-il un tuto ou une page que je n'ai pas trouvé?

    PS bis : voici les erreurs que j'ai pu trouver
    Images attachées Images attachées   

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 120
    Points : 44 917
    Points
    44 917
    Par défaut
    Bonsoir,
    je te conseille quand même de passer à la V3x de l'API, mais bon tu fais bien ce que tu veux.

    Tu dois être en limite du quota de requêtes.

  3. #3
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut géocodeur trop limité
    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
    <!-- Inclusion de l'API Google MAPS -->
    		<!-- Le paramètre "sensor" indique si cette application utilise détecteur pour déterminer la position de l'utilisateur -->
    		<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    		<script type="text/javascript">
    			function initialiser() {
    				var latlng = new google.maps.LatLng(46.587182,-0.390015); //coordonnées trouvées sur google maps, clique droit sur la carte "plus d'info sur l'endroit"
    				//objet contenant des propriétés avec des identificateurs prédéfinis dans Google Maps permettant
    				//de définir des options d'affichage de notre carte
    				var options = {
    					center: latlng,
    					zoom: 9,
    					mapTypeId: google.maps.MapTypeId.HYBRID //http://google-maps-api-version-3.touraineverte.com/reference/MapTypeId.html
    				};
    				//constructeur de la carte qui prend en paramêtre le conteneur HTML
    				//dans lequel la carte doit s'afficher et les options
    				var carte = new google.maps.Map(document.getElementById("carte"), options);
    				   var geocoder = new google.maps.Geocoder(); //Fonction de géocodage
     
    				   //On va chercher les villes du tableau
    				   		Villes = new Array();Villes.push("Celles sur Belle");Villes.push("Niort");Villes.push("Mauzé sur le Mignon");Villes.push("Celles sur Belle");Villes.push("Secondigné sur Belle");Villes.push("Mauzé sur le Mignon");Villes.push("Le Tallud");Villes.push("Ardin");Villes.push("St Maxire");Villes.push("St Pardoux");Villes.push("St Maxire");Villes.push("ECHIRE");Villes.push("St Maxire");Villes.push("Périgné");Villes.push("Gournay");Villes.push("Exoudun");
     
    				   for (Val in Villes){
     
    						   /* Appel au service de geocodage avec l'adresse en paramètre */
    						   geocoder.geocode( { 'address': Villes[Val]}, function(results, status) {
    							/* Si l'adresse a pu être géolocalisée */
    							if (status == google.maps.GeocoderStatus.OK) {
    							 /* Récupération de sa latitude et de sa longitude */
    							latitude = results[0].geometry.location.lat();
    							longitude = results[0].geometry.location.lng();
     
     
    							//on affiche le marqueur
    							var marqueur = new google.maps.Marker({
    							position: new google.maps.LatLng(latitude, longitude),
    							map: carte
    							});
     
     
     
    							 } else {
    							  alert("Le geocodage n\'a pu etre effectue pour la raison suivante: " + status);
    							 }
    							});
     
    				}
    			}
    		</script>
    mais au bout de la dixième ville :
    OVER_QUERY_LIMIT
    Je vais être obliger de placer les points à la main dans la base de données ...

    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
    <!-- Inclusion de l'API Google MAPS -->
    		<!-- Le paramètre "sensor" indique si cette application utilise détecteur pour déterminer la position de l'utilisateur -->
    		<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    		<script type="text/javascript">
    			function initialiser() {
    				var latlng = new google.maps.LatLng(46.587182,-0.390015); //coordonnées trouvées sur google maps, clique droit sur la carte "plus d'info sur l'endroit"
    				//objet contenant des propriétés avec des identificateurs prédéfinis dans Google Maps permettant
    				//de définir des options d'affichage de notre carte
    				var options = {
    					center: latlng,
    					zoom: 9,
    					mapTypeId: google.maps.MapTypeId.HYBRID //http://google-maps-api-version-3.touraineverte.com/reference/MapTypeId.html
    				};
    				//constructeur de la carte qui prend en paramêtre le conteneur HTML
    				//dans lequel la carte doit s'afficher et les options
    				var carte = new google.maps.Map(document.getElementById("carte"), options);
     
    				   var geocoder = new google.maps.Geocoder(); //Fonction de géocodage
     
    				 //  //On va chercher les villes du tableau
    //				   		Villes = new Array();Villes.push("Celles sur Belle");Villes.push("Niort");Villes.push("Mauzé sur le Mignon");Villes.push("Celles sur Belle");Villes.push("Secondigné sur Belle");Villes.push("Mauzé sur le Mignon");Villes.push("Le Tallud");Villes.push("Ardin");Villes.push("St Maxire");Villes.push("St Pardoux");Villes.push("St Maxire");Villes.push("ECHIRE");Villes.push("St Maxire");Villes.push("Périgné");Villes.push("Gournay");Villes.push("Exoudun");
     
    						Villes = new Array();
    						Villes ['a'] = new Array();
    						Villes ['a']['longitude'] = "46.587182";
    						Villes ['a']['lattitude'] = "-0.390015";
    						Villes ['b'] = new Array();
    						Villes ['b']['longitude'] = "46.391819";
    						Villes ['b']['lattitude'] = "-0.414734";
    						Villes ['c'] = new Array();
    						Villes ['c']['longitude'] = "46.399159";
    						Villes ['c']['lattitude'] = "-0.477734";
    						Villes ['d'] = new Array();
    						Villes ['d']['longitude'] = "46.381991";
    						Villes ['d']['lattitude'] = "-0.3895";
    						Villes ['e'] = new Array();
    						Villes ['e']['longitude'] = "46.360435";
    						Villes ['e']['lattitude'] = "-0.37302";
    						Villes ['f'] = new Array();
    						Villes ['f']['longitude'] = "46.361856";
    						Villes ['f']['lattitude'] = "-0.299034";
    						Villes ['g'] = new Array();
    						Villes ['g']['longitude'] = "46.44732";
    						Villes ['g']['lattitude'] = "-0.510521";
    						Villes ['h'] = new Array();
    						Villes ['h']['longitude'] = "46.407327";
    						Villes ['h']['lattitude'] = "-0.537643";
    						Villes ['i'] = new Array();
    						Villes ['i']['longitude'] = "46.3692";
    						Villes ['i']['lattitude'] = "-0.521851";
    						Villes ['j'] = new Array();
    						Villes ['j']['longitude'] = "46.285987";
    						Villes ['j']['lattitude'] = "-0.414391";
    						Villes ['k'] = new Array();
    						Villes ['k']['longitude'] = "46.257034";
    						Villes ['k']['lattitude'] = "-0.343323";
    						Villes ['l'] = new Array();
    						Villes ['l']['longitude'] = "46.234953";
    						Villes ['l']['lattitude'] = "-0.410957";
    						Villes ['m'] = new Array();
    						Villes ['m']['longitude'] = "46.215476";
    						Villes ['m']['lattitude'] = "-0.152092";
    						Villes ['n'] = new Array();
    						Villes ['n']['longitude'] = "46.206686";
    						Villes ['n']['lattitude'] = "-0.122223";
     
    						for (Val in Villes){
     
    						//on affiche le marqueur
    							var marqueur = new google.maps.Marker({
    							position: new google.maps.LatLng(Villes[Val]["longitude"], Villes[Val]["lattitude"]),
    							map: carte
    							});
     
    				}
     
    			}
    		</script>

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 120
    Points : 44 917
    Points
    44 917
    Par défaut
    Je vais être obliger de placer les points à la main dans la base de données ...
    quoiqu'il arrive si ce sont toujours les mêmes points que tu utilises il me semble que cela reste la meilleur solution, pas de requête donc plus rapide.


    Il existe une solution qui est de relancer la requête lorsque l'on reçoit un status OVER_QUERY_LIMIT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if( status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT){
        // relance la requete
        setTimeout( function(){
          codeLatLng( lat, lng); // rappel fonction avec meme param
        }, 200);
    }

    Enfin il me semble qu'une notation "JSON" est plus maintenanble et plus clair que celle que tu utilises, mais bon c'est une affaire de goût.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      var tMarker = [
        { 'lat' :45.767299, 'lon' : 4.834329, 'title' :'Lyon'},
        { 'lat' :48.856667, 'lon' : 2.350987, 'title' :'Paris'},
        { 'lat' :44.837368, 'lon' :-0.576144, 'title' :'Bordeaux'},
        { 'lat' :43.297612, 'lon' : 5.381042, 'title' :'Marseille'}
      ];

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème d'affichage d'une liste des points 3D
    Par highlight dans le forum OpenGL
    Réponses: 11
    Dernier message: 10/11/2011, 14h17
  2. Problème avec la touche ". / DEL"
    Par guiguizekid dans le forum NetBeans
    Réponses: 2
    Dernier message: 19/05/2011, 06h50
  3. Probléme sur géolocalisation
    Par petit'louise dans le forum API standards et tierces
    Réponses: 17
    Dernier message: 22/02/2011, 14h07
  4. Réponses: 25
    Dernier message: 16/07/2003, 20h41

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