0

ReverseGeCodingを機能させようとしていますが、戻り値を取得できません

function reverseGeoCode(lat,lng) {
 var reverseGeoAddress = '';
 var geocoder = new google.maps.Geocoder();
 var latlng = new google.maps.LatLng(lat, lng);
 geocoder.geocode({'latLng': latlng}, function(results, status) {
     if (status == google.maps.GeocoderStatus.OK) {
         if (results[1]) {
             if(results[1].formatted_address.length){
                 reverseGeoAddress = results[1].formatted_address;
                 //NOTE: when i console.log(reverseGeoAddress );
                 //its working fine i am getting the address
                 return reverseGeoAddress;
                   //but return not working.

             }  
         }
      } 
  });
}

関数を次のように呼び出すと

   var address = reverseGeoCode(31.518945,74.349316);

これで、アドレス変数が「未定義」になるたびに。なぜそうしているのですか?ヒントはありますか?

4

1 に答える 1

4

関数reverseGeoCodeに戻り値がありません

return reverseGeoAddress; is inside anonymous function.

簡単な修正は次のようになります-非同期関数であるため、コールバックを使用できる可能性があります。「コールバック」は、呼び出した場所からのハンドラーにすることができます。

// Invoking reverseGeoCode....
reverseGeoCode(lat,lng, function(myAddress){ 
  // Your custom code goes here...
});

function reverseGeoCode(lat,lng, callback) {
var reverseGeoAddress = '';
 var geocoder = new google.maps.Geocoder();
 var latlng = new google.maps.LatLng(lat, lng);
 geocoder.geocode({'latLng': latlng}, function(results, status) {
     if (status == google.maps.GeocoderStatus.OK) {
         if (results[1]) {
             if(results[1].formatted_address.length){
                 reverseGeoAddress = results[1].formatted_address;
                 // Callback the handler if it exists here
                 // No return value
                 callback(reverseGeoAddress);
             }  
         }
      } 
  });
}
于 2012-09-14T08:26:31.377 に答える