2010-09-29 7 views
0

J'essaye de développer une application où les adresses sont tirées d'une base de données pour les montrer en utilisant un marqueur sur une carte google sur mon site Web.Initialiser Google map avec plusieurs marqueurs

J'ai le code javascript suivant + jquery, google maps et tous les autres fichiers javascript nécessaires:

$(document).ready(function(){ 

    // initialise map 
    var myLatlng = new google.maps.LatLng(50.52,4.22); 
    // specify options 
    var myOptions = { 
     zoom: 5, 
     center: myLatlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 

    // attach map to html and set reference 
    var map = new google.maps.Map(document.getElementById("googlemap"), myOptions); 

    // markers array 
    var markers = Array(); 

    // infowindows array 
    var infos = Array(); 

    var lat = 50; 
    for(var j = 0; j < 5; j++){ 

     var contentString = '<div id="content">test</div>'; 

     var infowindow = new google.maps.InfoWindow({ 
      content: contentString 
     }); 

     var marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(lat,4.22), 
      map: map, 
      title: 'Europe' 
     }); 

     // push vars to arrays markers and infos 
     markers.push(marker); 
     infos.push(infowindow); 

     lat = lat + 1; 

    } 

    for(var i = 0; i < markers.length; i++) { 
     google.maps.event.addListener(markers[i], 'click', clickHandler(i)); 
    } 

    function clickHandler(i) { 
     infowindow.open(map,infos[i]); 
    } 

}); 

à tester/émulent la boucle que je vais utiliser pour extraire les données de la base de données en utilisant PHP J'ai inséré le peu de déclaration pour remplir le tableau des marqueurs et infos.

Tout fonctionne (en affichant les marqueurs) sauf que cliquer sur les marqueurs n'affiche pas les infoboxes.

Onload Je reçois aussi cette erreur dans Firebug: Argument devrait être la ligne fonction de type 23 - http://maps.gstatic.com/intl/nl_ALL/mapfiles/api-3/2/7/main.js

aide quelqu'un peut s'il vous plaît?

1 de plus sidequestion: comment puis-je transformer les adresses de chaînes comme numéro de rue, code postal, ville en lattitude et longitude?

Merci!

+1

Vous ne pouvez malheureusement pas vous aider avec le problème principal, mais pour la transformation des coordonnées de numéros de rue etc, jetez un oeil à l'API de géocodage de Google: http://code.google.com/apis/maps/documentation/geocoding /index.html – TuomasR

+0

thx pour l'intel TuomasR! –

Répondre

2

Le problème avec la projection des marqueurs vous est que vous appelez:

infowindow.open(map,infos[i]); 

Le second paramètre doit être un marqueur, pas l'info.

infowindow.open(map,marker); 

L'erreur javascript vient de ceci:

google.maps.event.addListener(markers[i], 'click', clickHandler(i)); 

lieu de lier clickHandler comme fonction d'événement, ce code fait appels clickHandler et tente de transmettre la valeur de retour (aucun) en tant que paramètre à l'auditeur. La fixation que le point à une fonction ne peut toujours pas produire ce que vous voulez, et cela est discuté dans http://code.google.com/apis/maps/documentation/javascript/events.html#EventClosures

Vous devriez faire:

addEventListener(markers[i]); 

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

Pour transformer, jetez un oeil numéros de rue etc coordonnées au géocodage de Google API: http://code.google.com/apis/maps/documentation/geocoding/index.html

+0

thx TuomasR, cela a aidé! –

+0

Super pour entendre! N'oubliez pas d'accepter la réponse si elle a effectivement résolu votre problème. – TuomasR

Questions connexes