Problème geocoding au delà de 11 villes [Résolu]

p.delbrayelle 14 Messages postés vendredi 25 avril 2014Date d'inscription 31 mars 2017 Dernière intervention - 9 juin 2014 à 19:00 - Dernière réponse : jordane45 20601 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention
- 9 juin 2014 à 23:23
Bonjour, j'ai trouvé un code qui correspond exactement à mes besoins, si ce n'est qu'il n'arrive pas à me placer plus de 11 points.

Je n'arrive pas à comprendre ou est le problème.

Merci de m'aider.


<!DOCTYPE html>
<html lang="fr">
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>[Google Maps API v3] Geocoding à la volée</title>
<style type="text/css">
html, body {
height : 100%;
}
#div_canvas {
margin : auto;
width : 100%;
height : 100%;
}
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=fr"></script>
<script type="text/javascript">

var geocoder;
var oMap;
var oBounds = new google.maps.LatLngBounds();

var data =[
{ adresse : 'Rennes, FRANCE'},
{ adresse : 'Saint Jacques de la Lande, FRANCE' },
{ adresse : 'Chantepie, FRANCE' },
{ adresse : 'Janze, FRANCE'},
{ adresse : 'Betton, FRANCE' },
{ adresse : 'Liffré, FRANCE' },
{ adresse : 'Saint Grégoire, FRANCE'},
{ adresse : 'Mordelles, FRANCE' },
{ adresse : 'Vezin le coquet, FRANCE' },
{ adresse : 'Pacé, FRANCE'},
{ adresse : 'Chartres de Bretagne, FRANCE' },
{ adresse : 'Noyal sur Vilaine, FRANCE' },
{ adresse : 'Chateaugiron, FRANCE' }
];

function initCarte() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(40, 2);
var myOptions = {
zoom : 8,
center : latlng = new google.maps.LatLng(48.0, -2.0),
backgroundColor : '#fff',
mapTypeId: google.maps.MapTypeId.ROADMAP
}
oMap = new google.maps.Map(document.getElementById("div_canvas"), myOptions);

for( var param=0; param < data.length; param++){
codeAddress( data[param].adresse);
}
}
function codeAddress(address){
geocoder.geocode( { 'address': address}, function(results, status) {
if( status == google.maps.GeocoderStatus.OK) {
oBounds.extend(results[0].geometry.location);
var marker = new google.maps.Marker({
map : oMap,
position: results[0].geometry.location
});
oMap.fitBounds( oBounds);
}
});
}
google.maps.event.addDomListener(window, 'load', initCarte);
</script>
</head>
<body>
<div id="div_canvas"></div>
</body>
</html>
Afficher la suite 

5 réponses

Répondre au sujet
jordane45 20601 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 9 juin 2014 à 20:08
+1
Utile
Bonjour,

http://stackoverflow.com/questions/10762839/javascript-google-maps-displays-only-10-markers-out-of-100-is-there-a-limit

https://developers.google.com/maps/documentation/staticmaps/?hl=en#Limits

http://www.sitepoint.com/forums/showthread.php?1185953-Google-Maps-API-V3-limits&p=5613231&viewfull=1#post5613231
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de jordane45
p.delbrayelle 14 Messages postés vendredi 25 avril 2014Date d'inscription 31 mars 2017 Dernière intervention - Modifié par p.delbrayelle le 9/06/2014 à 21:13
0
Utile
Merci pour la réponse rapide. Mais je bloque malgré tout. Je pense avoir compris qu'il y a un temps limite pour générer la carte mais je ne vois pas comment la contourner.
Commenter la réponse de p.delbrayelle
jordane45 20601 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 9 juin 2014 à 22:58
0
Utile
Tu as regardé les liens que je t'ai donné ?
Il y a un exemple qui a l'air de correspondre à tes besoins :

http://acleach.me.uk/gmaps/v3/plotaddresses.htm

<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Google Maps</title>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
  </head>
  <body>

    
    <div id="map" style="width:600px;height:400px;"></div>
    <div id="messages"></div>

    <script type="text/javascript">
    //<![CDATA[
    

    // delay between geocode requests - at the time of writing, 100 miliseconds seems to work well
    var delay = 100;


      // ====== Create map objects ======
      var infowindow = new google.maps.InfoWindow();
      var latlng = new google.maps.LatLng(-34.397, 150.644);
      var mapOptions = {
        zoom: 8,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      }
      var geo = new google.maps.Geocoder(); 
      var map = new google.maps.Map(document.getElementById("map"), mapOptions);
      var bounds = new google.maps.LatLngBounds();

      // ====== Geocoding ======
      function getAddress(search, next) {
        geo.geocode({address:search}, function (results,status)
          { 
            // If that was successful
            if (status == google.maps.GeocoderStatus.OK) {
              // Lets assume that the first marker is the one we want
              var p = results[0].geometry.location;
              var lat=p.lat();
              var lng=p.lng();
              // Output the data
                var msg = 'address="' + search + '" lat=' +lat+ ' lng=' +lng+ '(delay='+delay+'ms)<br>';
                document.getElementById("messages").innerHTML += msg;
              // Create a marker
              createMarker(search,lat,lng);
            }
            // ====== Decode the error status ======
            else {
              // === if we were sending the requests to fast, try this one again and increase the delay
              if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
                nextAddress--;
                delay++;
              } else {
                var reason="Code "+status;
                var msg = 'address="' + search + '" error=' +reason+ '(delay='+delay+'ms)<br>';
                document.getElementById("messages").innerHTML += msg;
              }   
            }
            next();
          }
        );
      }

     // ======= Function to create a marker
     function createMarker(add,lat,lng) {
       var contentString = add;
       var marker = new google.maps.Marker({
         position: new google.maps.LatLng(lat,lng),
         map: map,
         zIndex: Math.round(latlng.lat()*-100000)<<5
       });

      google.maps.event.addListener(marker, 'click', function() {
         infowindow.setContent(contentString); 
         infowindow.open(map,marker);
       });

       bounds.extend(marker.position);

     }

      // ======= An array of locations that we want to Geocode ========
      var addresses = [
               '251 Pantigo Road Hampton Bays NY 11946',
               'Amagensett Quiogue NY 11978',
               '789 Main Street Hampton Bays NY 11946',
               '30 Abrahams Path Hampton Bays NY 11946',
               '3 Winnebogue Ln Westhampton NY 11977',
               '44 White Oak Lane Montauk NY 11954',
               '107 stoney hill road Bridgehampton NY 11932',
               '250 Pantigo Rd Hampton Bays NY 11946',
               '250 Pantigo Rd Hampton Bays NY 11946',
               '44 Woodruff Lane Wainscott NY 11975',
               'Address East Hampton NY 11937',
               'Address Amagansett NY 11930',
               'Address Remsenburg NY 11960 ',
               'Address Westhampton NY 11977',
               'prop address Westhampton Dunes NY 11978',
               'prop address East Hampton NY 11937',
               'Address East Hampton NY 11937',
               'Address Southampton NY 11968',
               'Address Bridgehampton NY 11932',
               'Address Sagaponack NY 11962',
                "A totally bogus address"
      ];

      // ======= Global variable to remind us what to do next
      var nextAddress = 0;

      // ======= Function to call the next Geocode operation when the reply comes back

      function theNext() {
        if (nextAddress < addresses.length) {
          setTimeout('getAddress("'+addresses[nextAddress]+'",theNext)', delay);
          nextAddress++;
        } else {
          // We're done. Show map bounds
          map.fitBounds(bounds);
        }
      }

      // ======= Call that function for the first time =======
      theNext();

    //]]>
    </script>
  </body>

</html>






Commenter la réponse de jordane45
p.delbrayelle 14 Messages postés vendredi 25 avril 2014Date d'inscription 31 mars 2017 Dernière intervention - 9 juin 2014 à 23:16
0
Utile
1
Oui oui j'ai regardé, le problème vient en partie de mon anglais. J'ai bien essayé d'ajouter le laps de temps mais pas au bonne endroit.
Je regarde avec les éléments que tu viens de me donner.
Merci
jordane45 20601 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 23 avril 2018 Dernière intervention - 9 juin 2014 à 23:23
Oui oui j'ai regardé, le problème vient en partie de mon anglais
Ah ça .... malheureusement... dans bon nombre de métiers (et surtout dans l'informatique) l'anglais est nécéssaire...(et même obligatoire)... !

courage.. ^^
Commenter la réponse de p.delbrayelle

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.