2016-04-09 15 views
-2

Google Geocoder'dan lat ve uzun bilgiler almaya çalışıyorum, ancak yapılan aramada bilgilerin doğru şekilde çıkarılmasına rağmen, js değişkeni boş oluyor Açıkçası kod çok bu kısmı dışında varJS değişkeni "kaybolur" neden olmadan ve boş olur

var map, marker, latLong; 
 
var geocoderlat = new google.maps.Geocoder(); \t 
 
var addresslat = '<?php echo str_replace(" ","+",$address);?>'; 
 
function initMap() { 
 
\t 
 
\t geocoderlat.geocode({ 'address': addresslat}, function(results, status) { 
 
\t if (status == google.maps.GeocoderStatus.OK) { 
 
\t \t latLong = results[0].geometry.location; 
 
\t \t alert("Inside IF: "+latLong); 
 
\t } else { 
 
\t \t latLong = '<?php echo $latitude.",".$longitude;?>'; 
 
\t } 
 
\t }) 
 
\t 
 
\t alert("Outside: "+latLong); 
 

 
    var isDraggable = !('ontouchstart' in document.documentElement); 
 
\t var mapOptions = { 
 
\t center: new google.maps.LatLng(latLong), 
 
\t zoom: 12, 
 
     (...)

ama geri kalanı: imediately (dışarıda bir durum "eğer") bu kod parçası üzerinde benim ikinci uyarının aldıktan sonra Bu durumda kod önemli değil çünkü bu değişken benim kodumda hiçbir zaman bir daha kullanılmaz. Ajan Ransack ile tüm dosyalar üzerinde bile arama yaptınız, bu nedenle bu değişkenin başka bir yerde kullanılmadığından emin olun).

DÜZENLEME:

Tamam, bu gerçekten, gerçekten garip ...

function getGeoLatLong(addresslat) { 
 
    geocoderlat.geocode({ 'address': addresslat}, function(results, status) { 
 
    if (status == google.maps.GeocoderStatus.OK) { 
 
     return results[0].geometry.location; 
 
    } else { 
 
     return '<?php echo $latitude.",".$longitude;?>'; 
 
    } 
 
    }) 
 
} 
 

 
alert("Outside function: "+getGeoLatLong(addresslat));

Bu hala uyarısında "tanımsız" döndürür

. Kod yürütme, ikinci uyarınıza zaten eriştiğinde, yürütmek için daha fazla zaman harcadığı için

cevap

1

. Sonuçları kontrol etmek için setTimeout kullanmanız veya bunu denemeniz gerekir. Ayrıca

function initMap() {  
    geocoderlat.geocode({ 'address': addresslat}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
     latLong = results[0].geometry.location; 
     alert("Inside IF: "+latLong); 
     alert("Outside: "+latLong); 

    var isDraggable = !('ontouchstart' in document.documentElement); 
    var mapOptions = { 
     center: new google.maps.LatLng(latLong), 
     zoom: 12, 
     (...) 
     } else { 
     latLong = '<?php echo $latitude.",".$longitude;?>'; 
     } 
    }) 

, size üstündeki beyan etmek gerek latLong varsayılan olarak latLong = '<?php echo $latitude.",".$longitude;?>'; kullanmak istiyorsanız. geocode, yükleme bittiğinde her zaman geçersiz kılınacaktır.

EDIT Bunu deneyin.

function getGeoLatLong(addresslat) { 
geocoderlat.geocode({ 'address': addresslat}, checkresults) 
} 
function checkresults(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     alert("Outside function: " + results[0].geometry.location); 
    //declare the big chunk of code as a function and make a call to it. 
    } else { 
     alert("Outside function: <?php echo $latitude.','.$longitude;?>"); 
    //declare the big chunk of code as a function and make a call to it. 
    } 
    } 

    getGeoLatLong(addresslat); 
+0

Cevabınız için çok teşekkür ederim. Aslında bunun içindeyim, fakat kod BÜYÜK öbek bir feryat olduğu için, bu benim kodumu da "else" üzerinde de kopyalamak zorunda kalacağım anlamına gelir. Bu coğrafi kodu bir işlev içine koyarsam ve yalnızca bu işlevi çağırırsam ne olur? – Pedro

+0

Bu harika olurdu. fonksiyonları kullanmak her zaman iyidir. Dahili olarak bildirilen tüm değişkenleri işleve ilettiğinizden emin olun. –

+0

Burada bir şey yapmıyorum, çünkü bir işlevle bile, sonuç olarak hala "tanımsız" dönüyor! : S – Pedro

İlgili konular