2012-11-22 4 views
0

나는 주소로 Google지도에서 latlng을 얻기 위해 스크립트를 개발 중입니다.함수에서 변수로 json 배열을 반환

은 내가 정확한 값을 얻을 기능 map_address() 내부에 alert(jsonarr.lat);을 추가하는 듯했으나 경우이 같은 변수에 결과를 할당하는 경우 :

var coord = map_address('address'); 

alert(coord.lat); 

내가 오류를 얻을 coord is undefined

function map_address(addr) 
    { 

     var input_address = addr; 
     var geocoder = new google.maps.Geocoder(); 
     geocoder.geocode({ address: input_address }, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       var lat = results[0].geometry.location.lat(); 
       var lng = results[0].geometry.location.lng(); 


         jsonarr={'lat':lat,'lng':lng} 
         alert(jsonarr.lat); 
         return jsonarr;   
      } else { 
       alert("Nessuna coordinata trovata da questo indirizzo!"); 
      } 
     }); 
    } 
+0

거기에서 되돌릴 수 없습니다. 비동기 콜백입니다. – bfavaretto

답변

1

geocoder.geocode(..); 함수는 나중에 지오 코딩 작업이 완료 될 때 나중에 호출 될 다른 함수를 래핑하므로 비동기입니다. 모든 답변을

function map_address(addr, callback) { 

    var input_address = addr; 
    var geocoder = new google.maps.Geocoder(); 
    geocoder.geocode({ address: input_address }, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      var lat = results[0].geometry.location.lat(); 
      var lng = results[0].geometry.location.lng(); 


           jsonarr={'lat':lat,'lng':lng} 
           alert(jsonarr.lat); 
           callback(jsonarr) ; 


          } 
     else { 
      alert("Nessuna coordinata trovata da questo indirizzo!"); 
      } 
     }); 
} 
map_address("hogehoge", function(result){ 
    alert(result) 
}); 
1

이 같은 시도 돌아갑니다 .

function map_address(addr,callback) 
     { 

      var input_address = addr; 
      var geocoder = new google.maps.Geocoder(); 
      geocoder.geocode({ address: input_address }, function(results, status) { 
       if (status == google.maps.GeocoderStatus.OK) 
       { 
        var lat = results[0].geometry.location.lat(); 
        var lng = results[0].geometry.location.lng(); 

        jsonarr={'lat':lat,'lng':lng}      
        return callback(jsonarr);       
       } 
       else { 
        alert("No coord find"); 
       } 
      }); 
     } 


$(document).ready(function(){ 
    $(window).load(function(){ 

map_address('address string',function(coord){ 


    var center=new google.maps.LatLng(coord.lat,coord.lng); 



    var settings = { 
      zoom: 16, 
      center: center, 
      mapTypeControl: false, 
      mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}, 
      navigationControl: true, 
      navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL}, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 

    var map=new google.maps.Map(document.getElementById("map"), settings); 

var marker = new google.maps.Marker({ 
position: new google.maps.LatLng(coord.lat,coord.lng), 
map: map 
}); 


}); 
}); 

}); 
0

덕분에 난 콜백 내에서 내 모든 코드를 넣어 모든 괜찮이 최종 코드가 작동 :이 때문에 map_address(...)

항상 undefined