2012-04-27 159 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); 
    }); 
});