Problème geocoding au delà de 11 villes

Résolu
p.delbrayelle Messages postés 13 Date d'inscription vendredi 25 avril 2014 Statut Membre Dernière intervention 31 mars 2017 - 9 juin 2014 à 19:00
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 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>

4 réponses

p.delbrayelle Messages postés 13 Date d'inscription vendredi 25 avril 2014 Statut Membre Dernière intervention 31 mars 2017
Modifié par p.delbrayelle le 9/06/2014 à 21:13
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.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
9 juin 2014 à 22:58
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>






0
p.delbrayelle Messages postés 13 Date d'inscription vendredi 25 avril 2014 Statut Membre Dernière intervention 31 mars 2017
9 juin 2014 à 23:16
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
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
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.. ^^
0
Rejoignez-nous