2013-02-03 7 views
0

Je travaille avec google maps api (v3) et je dois ajouter des marqueurs sur une carte. En fait, je n'ai eu aucun problème à les afficher ou quoi que ce soit, mais après un certain temps, les marqueurs ont commencé à ne pas être affichés ou plus précisément, ils sont affichés de temps en temps.Google maps api (v3) n'affiche pas les marqueurs

Voici un code afin que vous puissiez voir ce que je fais et où le problème pourrait provenir:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
     <link rel="stylesheet" href="style.css" type="text/css" media="screen" /> 

     <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=[KEY]&sensor=true"></script> 
     <script type="text/javascript" src="google.js"></script> 
     <script type="text/javascript" src="dataLoading.js"></script> 
    </head> 
    <body onload="initializeMaps();"> 
     <div id="map_canvas"></div> 
     <script type="text/javascript"> 
      loadSpots(); 
     </script> 
    </body> 
</html> 

Et voici le code javascript:

var map; 
var yMarker = 'http://maps.google.com/mapfiles/ms/icons/yellow-dot.png'; 
var gMarker = 'http://maps.google.com/mapfiles/ms/icons/green-dot.png'; 
var bMarker = 'http://maps.google.com/mapfiles/ms/icons/blue-dot.png'; 
var pMarker = 'http://maps.google.com/mapfiles/ms/icons/pink-dot.png'; 

function initializeMaps() 
{ 
    geocoder = new google.maps.Geocoder(); 
var mapOptions = 
{ 
    center: new google.maps.LatLng(46.52863469527167, 2.4389648437), 
    zoom: 6, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 
map = new google.maps.Map(document.getElementById("map_canvas"), 
    mapOptions); 
} 

function getLatlng(address, name, type) 
{ 
geocoder.geocode({'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) 
    { 
     var marker = new google.maps.Marker({ 
      title: name, 
      map: map, 
      animation: google.maps.Animation.DROP, 
      position: results[0].geometry.location 
     }); 
     marker.setIcon((type == 2 ? gMarker : (type == 3 ? bMarker : (type == 4 ? pMarker : yMarker)))); 
    } 
}); 
} 

function addMarker(address, name, type) 
{ 
if (address != null && address != "") 
    getLatlng(address, name, type); 
} 

EDIT1

LoadSpots() est une fonction qui extrait des données de la base de données avec une requête ajax, puis appelle la fonction addMarker

+0

Combien de marqueurs essayez-vous d'ajouter lorsque le problème se produit? –

+0

Il fonctionnait avec des douzaines d'entre eux, mais maintenant même avec un, il ne fonctionne pas – Moucheg

+0

Il y a une limite de 10 demandes/seconde pour tous les services web et aussi une limite quotidienne de 2500 requêtes pour le géocodage. Je crains que vous ayez atteint ces limites et que votre accès soit bloqué maintenant (l'argument 'status' de la réponse de géocodage peut vous donner des détails) –

Répondre

1

Appelez loadSpots() à la fin de initializeMaps(), sinon il peut arriver que le map sera accédé avant son initialisation.

+0

Merci, c'était ça – Moucheg

Questions connexes