Google maps getDuration()返回null

Google maps getDuration()返回null,google-maps,google-maps-api-2,Google Maps,Google Maps Api 2,我试图通过Google maps javascript v2获取给定方向的持续时间和距离。我所做的是单击按钮,发送ajax请求,返回服务器端的纬度、经度信息(来自gpx文件)den再次使用从新航路点地图开始的地图重新填充div <head> <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;" type="text/javascript"></script> <sc

我试图通过Google maps javascript v2获取给定方向的持续时间和距离。我所做的是单击按钮,发送ajax请求,返回服务器端的纬度、经度信息(来自gpx文件)den再次使用从新航路点地图开始的地图重新填充div

<head>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;" type="text/javascript"></script>
<script type="text/javascript">

    var map;
    var directionsPanel;

var directions;

var points_lt = [12.9172543,12.9326889,12.9761378,12.9896399];

var points_lg = [77.6230109,77.6131779,77.6017195,77.5928038];

function initialize() {
    map = new GMap2(document.getElementById("map_canvas"));
    var wp = new Array(2);
    wp[0] = new GLatLng(12.9172543,77.6230109);
    wp[1] = new GLatLng(13.0144572,77.5689697);
    map.setUIToDefault();

    // load directions
    directionsPanel = document.getElementById("route");
    directions = new GDirections(map, directionsPanel);
    directions.loadFromWaypoints(wp);

    }

function ChangeIt(){
    var cur_lt=null;
    var cur_lg=null;
    var cal=$.ajax({
      type: "GET",
      url: "./Handler.php?q=now",
      dataType: "html"
    }); 
    cal.done(function(msg){
       if(msg == 0){
        return false;
       }
       var Gpoint=msg.split("|");
       cur_lt=Gpoint[0];
       cur_lg=Gpoint[1];
       var wp = new Array(2);
       wp[0] = new GLatLng(cur_lt,cur_lg);
       wp[1] = new GLatLng(13.0144572,77.5689697);
       document.getElementById("map_canvas").innerHTML="";  
       map = null;
       directionsPanel.innerHTML = "" ;
       map = new GMap2(document.getElementById("map_canvas"));
       map.setUIToDefault();
       directions = new GDirections(map,directionsPanel);
       directions.loadFromWaypoints(wp);
       alert(directions.getDuration().html);
     });
}   
$(document).ready(function(){
    var a= function(){
            ChangeIt();
    };
    $("#bt1").click(function(){
        ChangeIt();
    });
    //setInterval(a, 3000); 

}); 
</script>

</head>
<body onload="initialize()" onunload="GUnload()">
    <input type="button"  name="bt1" value="Change Route" id="bt1">
    &nbsp;<div id="map_canvas" style="width: 600px; height: 400px ;left:350px"></div>
<div id="route" style="width: 25%; height:480px; float:right; border; 1px solid black;">          </div>

<br/>

var映射;
var方向面板;
var方向;
var points_lt=[12.9172543,12.9326889,12.9761378,12.9896399];
var points_lg=[77.6230109,77.6131779,77.6017195,77.5928038];
函数初始化(){
map=newgmap2(document.getElementById(“map_canvas”);
var wp=新阵列(2);
wp[0]=新玻璃(12.9172543,77.6230109);
wp[1]=新玻璃(13.0144572,77.5689697);
map.setUIToDefault();
//荷载方向
directionsPanel=document.getElementById(“路由”);
方向=新的GDDirections(地图、方向面板);
方向。从航路点装载(wp);
}
函数ChangeIt(){
var cur_lt=null;
var cur_lg=null;
var cal=$.ajax({
键入:“获取”,
url:“./Handler.php?q=now”,
数据类型:“html”
}); 
校准完成(功能(msg){
如果(msg==0){
返回false;
}
var Gpoint=msg.split(“|”);
cur_lt=Gpoint[0];
cur_lg=Gpoint[1];
var wp=新阵列(2);
wp[0]=新玻璃(当前、当前和未来);
wp[1]=新玻璃(13.0144572,77.5689697);
document.getElementById(“map_canvas”).innerHTML=“”;
map=null;
directionsPanel.innerHTML=“”;
map=newgmap2(document.getElementById(“map_canvas”);
map.setUIToDefault();
方向=新的GDDirections(地图、方向面板);
方向。从航路点装载(wp);
警报(directions.getDuration().html);
});
}   
$(文档).ready(函数(){
var a=函数(){
ChangeIt();
};
$(“#bt1”)。单击(函数(){
ChangeIt();
});
//设定间隔(a,3000);
}); 

`

<head>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;" type="text/javascript"></script>
<script type="text/javascript">

    var map;
    var directionsPanel;

var directions;

var points_lt = [12.9172543,12.9326889,12.9761378,12.9896399];

var points_lg = [77.6230109,77.6131779,77.6017195,77.5928038];

function initialize() {
    map = new GMap2(document.getElementById("map_canvas"));
    var wp = new Array(2);
    wp[0] = new GLatLng(12.9172543,77.6230109);
    wp[1] = new GLatLng(13.0144572,77.5689697);
    map.setUIToDefault();

    // load directions
    directionsPanel = document.getElementById("route");
    directions = new GDirections(map, directionsPanel);
    directions.loadFromWaypoints(wp);

    }

function ChangeIt(){
    var cur_lt=null;
    var cur_lg=null;
    var cal=$.ajax({
      type: "GET",
      url: "./Handler.php?q=now",
      dataType: "html"
    }); 
    cal.done(function(msg){
       if(msg == 0){
        return false;
       }
       var Gpoint=msg.split("|");
       cur_lt=Gpoint[0];
       cur_lg=Gpoint[1];
       var wp = new Array(2);
       wp[0] = new GLatLng(cur_lt,cur_lg);
       wp[1] = new GLatLng(13.0144572,77.5689697);
       document.getElementById("map_canvas").innerHTML="";  
       map = null;
       directionsPanel.innerHTML = "" ;
       map = new GMap2(document.getElementById("map_canvas"));
       map.setUIToDefault();
       directions = new GDirections(map,directionsPanel);
       directions.loadFromWaypoints(wp);
       alert(directions.getDuration().html);
     });
}   
$(document).ready(function(){
    var a= function(){
            ChangeIt();
    };
    $("#bt1").click(function(){
        ChangeIt();
    });
    //setInterval(a, 3000); 

}); 
</script>

</head>
<body onload="initialize()" onunload="GUnload()">
    <input type="button"  name="bt1" value="Change Route" id="bt1">
    &nbsp;<div id="map_canvas" style="width: 600px; height: 400px ;left:350px"></div>
<div id="route" style="width: 25%; height:480px; float:right; border; 1px solid black;">          </div>

<br/>
但是当我尝试获取距离或持续时间时,我没有得到任何警告。我想我返回的是null或一些不期望的东西。请帮助。我是谷歌地图新手。如果我做错了,请告诉我。请注意:

<head>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;" type="text/javascript"></script>
<script type="text/javascript">

    var map;
    var directionsPanel;

var directions;

var points_lt = [12.9172543,12.9326889,12.9761378,12.9896399];

var points_lg = [77.6230109,77.6131779,77.6017195,77.5928038];

function initialize() {
    map = new GMap2(document.getElementById("map_canvas"));
    var wp = new Array(2);
    wp[0] = new GLatLng(12.9172543,77.6230109);
    wp[1] = new GLatLng(13.0144572,77.5689697);
    map.setUIToDefault();

    // load directions
    directionsPanel = document.getElementById("route");
    directions = new GDirections(map, directionsPanel);
    directions.loadFromWaypoints(wp);

    }

function ChangeIt(){
    var cur_lt=null;
    var cur_lg=null;
    var cal=$.ajax({
      type: "GET",
      url: "./Handler.php?q=now",
      dataType: "html"
    }); 
    cal.done(function(msg){
       if(msg == 0){
        return false;
       }
       var Gpoint=msg.split("|");
       cur_lt=Gpoint[0];
       cur_lg=Gpoint[1];
       var wp = new Array(2);
       wp[0] = new GLatLng(cur_lt,cur_lg);
       wp[1] = new GLatLng(13.0144572,77.5689697);
       document.getElementById("map_canvas").innerHTML="";  
       map = null;
       directionsPanel.innerHTML = "" ;
       map = new GMap2(document.getElementById("map_canvas"));
       map.setUIToDefault();
       directions = new GDirections(map,directionsPanel);
       directions.loadFromWaypoints(wp);
       alert(directions.getDuration().html);
     });
}   
$(document).ready(function(){
    var a= function(){
            ChangeIt();
    };
    $("#bt1").click(function(){
        ChangeIt();
    });
    //setInterval(a, 3000); 

}); 
</script>

</head>
<body onload="initialize()" onunload="GUnload()">
    <input type="button"  name="bt1" value="Change Route" id="bt1">
    &nbsp;<div id="map_canvas" style="width: 600px; height: 400px ;left:350px"></div>
<div id="route" style="width: 25%; height:480px; float:right; border; 1px solid black;">          </div>

<br/>
GoogleMapsJavaScriptAPI第2版已经正式发布 截至2010年5月19日已弃用。v2api将继续工作到 2013年5月19日

<head>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;" type="text/javascript"></script>
<script type="text/javascript">

    var map;
    var directionsPanel;

var directions;

var points_lt = [12.9172543,12.9326889,12.9761378,12.9896399];

var points_lg = [77.6230109,77.6131779,77.6017195,77.5928038];

function initialize() {
    map = new GMap2(document.getElementById("map_canvas"));
    var wp = new Array(2);
    wp[0] = new GLatLng(12.9172543,77.6230109);
    wp[1] = new GLatLng(13.0144572,77.5689697);
    map.setUIToDefault();

    // load directions
    directionsPanel = document.getElementById("route");
    directions = new GDirections(map, directionsPanel);
    directions.loadFromWaypoints(wp);

    }

function ChangeIt(){
    var cur_lt=null;
    var cur_lg=null;
    var cal=$.ajax({
      type: "GET",
      url: "./Handler.php?q=now",
      dataType: "html"
    }); 
    cal.done(function(msg){
       if(msg == 0){
        return false;
       }
       var Gpoint=msg.split("|");
       cur_lt=Gpoint[0];
       cur_lg=Gpoint[1];
       var wp = new Array(2);
       wp[0] = new GLatLng(cur_lt,cur_lg);
       wp[1] = new GLatLng(13.0144572,77.5689697);
       document.getElementById("map_canvas").innerHTML="";  
       map = null;
       directionsPanel.innerHTML = "" ;
       map = new GMap2(document.getElementById("map_canvas"));
       map.setUIToDefault();
       directions = new GDirections(map,directionsPanel);
       directions.loadFromWaypoints(wp);
       alert(directions.getDuration().html);
     });
}   
$(document).ready(function(){
    var a= function(){
            ChangeIt();
    };
    $("#bt1").click(function(){
        ChangeIt();
    });
    //setInterval(a, 3000); 

}); 
</script>

</head>
<body onload="initialize()" onunload="GUnload()">
    <input type="button"  name="bt1" value="Change Route" id="bt1">
    &nbsp;<div id="map_canvas" style="width: 600px; height: 400px ;left:350px"></div>
<div id="route" style="width: 25%; height:480px; float:right; border; 1px solid black;">          </div>

<br/>

我强烈建议您迁移到Google API V3,方向服务是异步的。在数据从服务器返回之前,您无法访问结果。有关可用事件的描述,请参见(“load”似乎有可能,但我已经有一段时间没看v2了)

<head>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;" type="text/javascript"></script>
<script type="text/javascript">

    var map;
    var directionsPanel;

var directions;

var points_lt = [12.9172543,12.9326889,12.9761378,12.9896399];

var points_lg = [77.6230109,77.6131779,77.6017195,77.5928038];

function initialize() {
    map = new GMap2(document.getElementById("map_canvas"));
    var wp = new Array(2);
    wp[0] = new GLatLng(12.9172543,77.6230109);
    wp[1] = new GLatLng(13.0144572,77.5689697);
    map.setUIToDefault();

    // load directions
    directionsPanel = document.getElementById("route");
    directions = new GDirections(map, directionsPanel);
    directions.loadFromWaypoints(wp);

    }

function ChangeIt(){
    var cur_lt=null;
    var cur_lg=null;
    var cal=$.ajax({
      type: "GET",
      url: "./Handler.php?q=now",
      dataType: "html"
    }); 
    cal.done(function(msg){
       if(msg == 0){
        return false;
       }
       var Gpoint=msg.split("|");
       cur_lt=Gpoint[0];
       cur_lg=Gpoint[1];
       var wp = new Array(2);
       wp[0] = new GLatLng(cur_lt,cur_lg);
       wp[1] = new GLatLng(13.0144572,77.5689697);
       document.getElementById("map_canvas").innerHTML="";  
       map = null;
       directionsPanel.innerHTML = "" ;
       map = new GMap2(document.getElementById("map_canvas"));
       map.setUIToDefault();
       directions = new GDirections(map,directionsPanel);
       directions.loadFromWaypoints(wp);
       alert(directions.getDuration().html);
     });
}   
$(document).ready(function(){
    var a= function(){
            ChangeIt();
    };
    $("#bt1").click(function(){
        ChangeIt();
    });
    //setInterval(a, 3000); 

}); 
</script>

</head>
<body onload="initialize()" onunload="GUnload()">
    <input type="button"  name="bt1" value="Change Route" id="bt1">
    &nbsp;<div id="map_canvas" style="width: 600px; height: 400px ;left:350px"></div>
<div id="route" style="width: 25%; height:480px; float:right; border; 1px solid black;">          </div>

<br/>

请注意,Google Maps API v2已被弃用,不应用于新的开发。

您能告诉我如何在v3中执行相同的操作吗?它的语法是不同的,但是有很多例子,我建议你尝试一下,如果你不能让它工作,就发布你的代码。
<head>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;" type="text/javascript"></script>
<script type="text/javascript">

    var map;
    var directionsPanel;

var directions;

var points_lt = [12.9172543,12.9326889,12.9761378,12.9896399];

var points_lg = [77.6230109,77.6131779,77.6017195,77.5928038];

function initialize() {
    map = new GMap2(document.getElementById("map_canvas"));
    var wp = new Array(2);
    wp[0] = new GLatLng(12.9172543,77.6230109);
    wp[1] = new GLatLng(13.0144572,77.5689697);
    map.setUIToDefault();

    // load directions
    directionsPanel = document.getElementById("route");
    directions = new GDirections(map, directionsPanel);
    directions.loadFromWaypoints(wp);

    }

function ChangeIt(){
    var cur_lt=null;
    var cur_lg=null;
    var cal=$.ajax({
      type: "GET",
      url: "./Handler.php?q=now",
      dataType: "html"
    }); 
    cal.done(function(msg){
       if(msg == 0){
        return false;
       }
       var Gpoint=msg.split("|");
       cur_lt=Gpoint[0];
       cur_lg=Gpoint[1];
       var wp = new Array(2);
       wp[0] = new GLatLng(cur_lt,cur_lg);
       wp[1] = new GLatLng(13.0144572,77.5689697);
       document.getElementById("map_canvas").innerHTML="";  
       map = null;
       directionsPanel.innerHTML = "" ;
       map = new GMap2(document.getElementById("map_canvas"));
       map.setUIToDefault();
       directions = new GDirections(map,directionsPanel);
       directions.loadFromWaypoints(wp);
       alert(directions.getDuration().html);
     });
}   
$(document).ready(function(){
    var a= function(){
            ChangeIt();
    };
    $("#bt1").click(function(){
        ChangeIt();
    });
    //setInterval(a, 3000); 

}); 
</script>

</head>
<body onload="initialize()" onunload="GUnload()">
    <input type="button"  name="bt1" value="Change Route" id="bt1">
    &nbsp;<div id="map_canvas" style="width: 600px; height: 400px ;left:350px"></div>
<div id="route" style="width: 25%; height:480px; float:right; border; 1px solid black;">          </div>

<br/>