마우스를 클릭 한 영역을 기반으로지도에 마커를 배치하는 스크립트를 만들었습니다. 마커가 놓여지면 마우스가 마커 위로 움직일 때 마커가 놓여있는 곳의 주소가 infobox에 나타납니다. 그러나 "info_text"를 호출하면 undefined가 반환되기 때문에 정보창이 표시되지 않습니다. 콜백 함수를 추가해야한다는 것을 알았지 만 올바르게 구현한다고 생각하지 않습니다. 누구든지 내 코드를 수정하도록 도와 줄 수 있습니까? 감사합니다콜백 함수가 작동하지 않습니다.
내 코드 :
var geocoder;
function initialize()
{
geocoder = new google.maps.Geocoder();
var event = google.maps.event.addListener;
// intializing and creating the map.
var mapOptions = {
zoom: 4,
center: new google.maps.LatLng(-25.363882, 131.044922),
mapTypeId: google.maps.MapTypeId.TERRAIN
};
var map = new google.maps.Map(document.getElementById('map'),
mapOptions);
event(map,'click',function(e){
var marker = placeMarker_and_attachMessage(e.latLng,map,count);
count = count + 1;
});
} // end of initalize.
function placeMarker_and_attachMessage(position,map)
{
var event = google.maps.event.addListener;
var message = ['This', 'is', 'the', 'secret', 'message'];
var marker = new google.maps.Marker({
position: position,
map: map
});
var pos = info_text(position);
alert('pos is: ' + pos);
var infowindow = new google.maps.InfoWindow({
content: 'hello'
});
event(marker,'mouseover',function(){
infowindow.open(map,this);
});
event(marker,'mouseout',function(){
infowindow.close();
});
} // end of function.
function info_text(position)
{
var lat = parseFloat(position.lat());
var lng = parseFloat(position.lng());
alert('lat,lng is: ' + (lat,lng));
var latlng = new google.maps.LatLng(lat,lng);
alert('just before geocode');
geocoder.geocode({'latLng': latlng}, function(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
alert('in info_text If statement');
if(results[1])
{
alert('in inner if statement');
var finalResult = myCallback(results[1].formatted_address);
return finalResult;
}
else
{
alert('no results found');
}
}
else
{
alert('could not pinpoint location');
}
});
}
function myCallback(loc)
{
alert('i have a location!');
return loc;
}
google.maps.event.addDomListener(window, 'load', initialize);
안녕하세요. 비동기 코드에서 콜백을 사용하는 방법에 대한 약간의 오해가 있습니다. [더 읽을 거리] (http://en.wikipedia.org/wiki/Callback_ (computer_programming))를 추천 해 주시겠습니까? 결론은 시도하는 방식으로 콜백 값을 반환 할 수 없다는 것입니다. – Jivings
@Jivings : 답장을 보내 주셔서 감사합니다. 내 방식대로 작동하지 않으면 주소를 반환하는 가장 좋은 방법은 무엇입니까? – user1923
콜백 함수에서 원하는 동작을 수행해야합니다. – Jivings