2012-04-27 157 views
0

我沒有任何以前的JavaScript經驗。從回調返回值

我想實現以下功能,我希望用返回的值緯度和經度:

function get_address() { 
    var geocoder = new google.maps.Geocoder() 

    geocoder.geocode({ address: "SE-17270 Sverige"}, 
    function(locResult) { 

    var lat = locResult[0].geometry.location.lat(); 
    var lng = locResult[0].geometry.location.lng(); 
    alert(lat); 
    alert(lng); 
    }) 
} 

我該怎麼辦呢?

所以我想要做的是這樣的:

 function get_address(postcode) 
     { 
     var geocoder = new google.maps.Geocoder() 
     var lat 
     var lng 

     geocoder.geocode({ address: "SE-"+postcode+"Sverige"}, 
     function(locResult) { 

      lat = locResult[0].geometry.location.lat(); 
      lng = locResult[0].geometry.location.lng(); 
     }) 
     return lat,lng 
     } 

回答

0

聲明變量latlng外回調函數。

+0

'地址解析器。 geocode' is async ... – 2012-04-27 11:05:24

3

使用一個回調來處理地理編碼結果:

function myCallback(lat, lng) { 
    // Process lat and lng. 
} 

function get_address(callback) { 
    var geocoder = new google.maps.Geocoder() 

    geocoder.geocode({ address: "SE-17270 Sverige"}, 
     function(locResult) { 
      var lat = locResult[0].geometry.location.lat(); 
      var lng = locResult[0].geometry.location.lng(); 
      callback(lat, lng); 
     } 
    ); 
} 
.... 
get_address(myCallback); 
1

,你可以使用全局變量或數組返回值,例如:

全局變量的方法:

lat = ""; 
lng = ""; 

function get_address() { 
    var geocoder = new google.maps.Geocoder() 

    geocoder.geocode({ address: "SE-17270 Sverige"}, 
    function(locResult) { 

    lat = locResult[0].geometry.location.lat(); 
    lng = locResult[0].geometry.location.lng(); 
    alert(lat); 
    alert(lng); 
    }) 
} 

array method:

function get_address() { 
    var geocoder = new google.maps.Geocoder() 

    geocoder.geocode({ address: "SE-17270 Sverige"}, 
    function(locResult) { 

    var lat = locResult[0].geometry.location.lat(); 
    var lng = locResult[0].geometry.location.lng(); 

    thearray = []; 
    thearray.push(lat); 
    thearray.push(lng); 
    return thearray; 
    }) 
} 
+0

因此,'geocoder.geocode'是異步的,這不會有幫助。 – 2012-04-27 11:06:54

1

在報頭部分添加谷歌庫:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script> 

正確的語法錯誤,然後啓動該功能:DEMO

CODE(與jquery的onload):

var lat = ""; 
var lng = ""; 

function getLatLng(callback) { 
    lat = callback.lat(); 
    lng = callback.lng(); 
    alert(lat +" "+lng); 
} 

$(function() { 
    var geocoder = new google.maps.Geocoder() 

    geocoder.geocode({ 
     address: "SE-17270 Sverige" 
    }, function(locResult) { 
     getLatLng(locResult[0].geometry.location); 
    }); 
});