2011-06-16 8 views
2

Je suis en train de géocodage un nom de lieu, mais quand je lance la fonction, je reçois,Google maps v3 géocodage

« une chaîne vide » dans ma console,

ci-dessous est mon code pourquoi serait-ce se passer?

function getLatLong(address) 
{ 
    var geocoder = new google.maps.Geocoder(); 
    var result = ""; 
    geocoder.geocode({ 'address': address, 'region': 'uk' }, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      result = results[0].geometry.location; 
     } else { 
      result = "Unable to find address: " + status; 
     } 
    }); 
    console.log(result); 
} 

MISE À JOUR

Ok, donc j'ai ma valeur d'utilité à la console, maintenant quand je tente de pousser la valeur de l'élément dans la fonction, je reçois définie comme un retour, ci-dessous le code complet,

function getLatLong(address) 
{ 
    var geocoder = new google.maps.Geocoder(); 
    var result = ""; 
    geocoder.geocode({ 'address': address, 'region': 'uk' }, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      result = results[0].geometry.location; 
      return result; 
     } else { 
      result = "Unable to find address: " + status; 
      alert(result); 
     } 
    }); 
} 

//getLatLong("YORK"); 

function loadScript(postcode){ 
    alert(postcode); 
    var script = document.createElement("script"); 
    script.type = "text/javascript"; 
    script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initialize?"+postcode; 
    document.body.appendChild(script); 
    } 

    /* load map on visitors location */ 
    function initialize(postcode){ 
    var myLatlng = new google.maps.LatLng(getLatLong(postcode)); 
    var myOptions = { 
     center: myLatlng, 
     zoom:13, 
     disableDefaultUI: true, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 

    var map = new google.maps.Map(document.getElementById('map'), myOptions); 
    google.maps.event.trigger(map, 'resize'); 
    map.setZoom(map.getZoom()); 
    var marker = new google.maps.Marker({ 
     position: myLatlng, 
     map: map, 
     icon:'http://google-maps-icons.googlecode.com/files/home.png', 
    }); 
    } 

Et on l'appelle comme ça,

$(function(){ 
    $("dd a, dt a").live("click", function(){ 
     var self = $(this); 
     $("#overlay").fadeIn('slow'); 
     var targetProcent = 85; 
     var targetWidth = $(window).width() * (targetProcent/100); 
     var targetHeight = $(window).height() * (targetProcent/100); 
     var targetX = ($(window).width() - targetWidth)/2; 
     var targetY = ($(window).height() - targetHeight)/2 + $(document).scrollTop(); 
     $('#lightbox').height(700); 
     $('#lightbox').width(targetWidth); 
     $('#lightbox').load(self.attr("href")); 
     loadScript($("#postcode").val()); 
     //usePointFromPostcode(document.getElementById('postcode').value, placeMarkerAtPoint) 
     $('#lightbox').css({ 
      "position": "absolute", 
      "top": targetY+"px", 
      "left": targetX+"px" 
     }).fadeIn('slow'); 
     return false; 
    }); 
    }); 

$ ("# code postal"). Val() correspond à un élément chargé lors de l'utilisation de load()

Répondre

4

Vous effectuez un appel asynchrone, puis imprimez vers la console. le hasnt d'appel est revenu encore

solution

:

déplacer la console.log dans le rappel

modifier: le rappel est la fonction anonyme que vous passez comme argument géocodage, sa signature est function(results, status) vous devez mettre votre console.log appel à la fin de cette fonction

EDIT pour votre édition:

votre url de script ressemble à son mal:

"http://maps.google.com/maps/api/js?sensor=false&callback=initialize?"+postcode 

je suis assez sûr que le virement de bord code postal ne marche pas quoi que ce soit?. Si quelque chose, l'url ne devrait en contenir qu'un? avant le début des paramètres de requête. Il semblerait que vous vouliez passer le code postal à la fonction initialize, la manière la plus simple de le faire serait d'utiliser une variable globale.

définir la variable globale dans la fonction loadScript et le lire dans la fonction initialize

+0

ce qui est le rappel? – Udders

+0

changer '}); console.log (résultat); 'à ' console.log (résultat); }); ' – venimus