2017-02-06 6 views
-1

私は以下の機能を持っています。関数パラメータの変数を設定する

function geocodePosition(pos, inputField) { 
    var retvalue = ""; 
    geocoder = new google.maps.Geocoder(); 
    geocoder.geocode({latLng: pos}, function (results, status) { 

      if (status == google.maps.GeocoderStatus.OK) { 
       retvalue = results[0].formatted_address; 
       inputField.value = retvalue; 
      } else { 
      alert('Cannot determine address at this location status [' + status + "]"); 
      } 

    }); 
    alert ("retvalue : " + retvalue); 
    return retvalue; 
} 

私はここで何か基本的なものが欠けていることを知っています。しかし、警戒声明の謝辞は必ず空白です。ジオコードを呼び出す関数ブロックにどのように設定するのですか?

種類は、ジオコーディングプロセスが非同期であるため、これはマイケル

+0

'retvalue'は' geocoder.geocode({緯度経度:POS}のコールバックでのみ利用可能であり、関数(その結果、ステータス){' –

答えて

0

について。つまり、アラートが実行される前に、データがそこにあることを意味します。このようなコールバック関数を使用することができる:

reverseGeocoder: function (lat, lng, callback) { 

    var geocoder = new google.maps.Geocoder; 
    var addressComponents = {}; 
    geocoder.geocode({ 
     'location': { 
      lat:lat, 
      lng: lng 
     } 
    }, function (results, status){ 
     if(status === google.maps.GeocoderStatus.OK){ 

       callback(results); 
      } else { 
       alert('No information found.'); 
      } 

     }else { 
      alert("Error "+status); 
     } 
    }); 

使用:

doGeocode (lat, lng, function (response){ 
//here are your data 
)}; 
+0

ありがとうございました。MapMarkerを関数reversegeocodeに渡し、ジオコード結果でマーカーのタイトルを設定するためにコードを修正しました。 – mbieren

関連する問題