2011-06-21 3 views
0

J'essaie d'utiliser Google service de géocodage pour obtenir les coordonnées des villes entrées par l'utilisateur. Cependant, il semble qu'il y ait un problème lors de l'initialisation de l'objet LatLng() (latlngCity), et la carte n'apparaîtra pas. Le code est le suivant:google geocoder service

var map; 
var latlngCity; 

function initialize() { 
    var geocoder = new google.maps.Geocoder(); 
    geocoder.geocode({'address': 'Lisbon, PT'}, function(results, status) { 
     if(status == google.maps.GeocoderStatus.OK) { 
     latlngCity = results[0].geometry.location; 
     } 
    }); 


    var myMapOptions = { 
     zoom: 8, 
     center: latlngCity, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

    map = new google.maps.Map(document.getElementById("map_canvas"), 
     myMapOptions); 
} 

Pour simplifier, j'insère moi-même la chaîne de ville d'adresse. La carte des variables et latlngCity sont des globals. Y a-t-il un problème avec ce code? Merci beaucoup.

Répondre

0

Vous devez déplacer le code de création de la carte dans le rappel geocode (ou bien créer la carte avec une position par défaut, puis recentrer la carte dans le rappel).

Dans votre code, latlngCity est indéfini au moment de la création de la carte tandis que geocode est toujours en cours d'exécution (de manière asynchrone).

Espérons que cela a du sens. Sinon, je vais fournir du code. Faites le moi savoir.

+0

Merci pour la réponse. J'ai essayé de créer la carte à l'intérieur du rappel et cela a fonctionné. Le géocodeur fonctionne maintenant très bien. Cependant, je suis maintenant incapable de créer des marqueurs sur la carte. J'ai déclaré la carte sans 'var' dans le rappel. Il était censé devenir mondial, n'est-ce pas? Mais quand je définis la carte dans les options des marqueurs, elle n'apparaît jamais. –

+0

Où créez-vous les marqueurs? Il se pourrait bien que ce soit exactement le même problème - essayez de placer les marqueurs dans le rappel 'geocode', après la création de la carte. – mhyfritz

+0

C'est tout! J'ai dû créer les marqueurs à l'intérieur du rappel. Merci encore. –

Questions connexes