2012-04-27 24 views
0

以前のjavascriptの経験はありません。コールバックからの戻り値

私は緯度とLNGの値を返すために使用する以下の機能を実装しようとしている:私はこれをどのように行うのです

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'は非同期です... –

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); 
    }) 
} 

アレイ方式:

CODE(jQueryのオンロードで):

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

正しい構文エラーをした後、機能を開始:210

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'は非同期です。これは役に立ちません。 –

1

ヘッダ部でGoogleライブラリを追加

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); 
    }); 
}); 
関連する問題