如何解析并返回谷歌方向服务响应?

时间:2012-12-14 11:46:40

标签: javascript ios google-maps-api-3 asynccallback

我如何解析谷歌方向服务的响应? 我从我的iOS WebView调用javascript代码,我想从java脚本返回一些值到iOS。当我使用警报功能显示时,我可以看到响应,但它没有返回值。我认为这可能是函数是回调函数。所以我该怎么做 ?请告诉我解决方案

这是我的代码:

    var value = function() {

var directionsService = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer();
   // var response=new google.maps.DirectionsResult;

var map = new google.maps.Map(document.getElementById('map'), {
                              zoom:7,
                              mapTypeId: google.maps.MapTypeId.ROADMAP
                              });

directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('panel'));

var request = {
    origin: 'Chicago',
    destination: 'New York',
    travelMode: google.maps.TravelMode.TRANSIT
};
var temp;
directionsService.route(request,
                        function(response, status)
                        {
                           if (status == google.maps.DirectionsStatus.OK)
                            {
                           t=response.routes[0].copyrights;
                           temp=t;
                           alert(t);
                            directionsDisplay.setDirections(response);
                                  return t;

                            }
                        } );

     return temp;

};

1 个答案:

答案 0 :(得分:1)

不是将value()的returnValue用作另一个函数中的变量,而是必须在directionsService.route()的回调中调用另一个函数,并将t作为参数传递给另一个函数。

请求directionsService是一个异步过程,当value()返回temp时尚未完成,这就是temp仍然是undefined的原因。