我想在访问数据库中存储路径的距离,我几乎就在那里,但只有最后一个距离被提交到数据库。你能帮助我吗? 只有一个地址作为原点,我正在尝试将四个地址作为目的地。无论如何,谢谢,比尔。
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"> </script>
</head>
<body>
<script type="text/javascript">
var directionsService = new google.maps.DirectionsService();
var origem;
var destino;
var strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = Z:\\Projetos\\GoogleMaps\\GoogleMaps.mdb;"
//Database Connection
var cn = new ActiveXObject("ADODB.Connection");
cn.Open(strConn);
//Recordset
var rsOrigem = new ActiveXObject("ADODB.Recordset");
var sqlOrigem = "select * from tblOrigem";
rsOrigem.Open(sqlOrigem, cn);
var rsDestino = new ActiveXObject("ADODB.Recordset");
var sqlDestino = "select * from tblDestino";
rsDestino.Open(sqlDestino, cn);
rsOrigem.Movefirst();
rsDestino.Movefirst();
while(!rsDestino.eof) {
origem = rsOrigem.fields("Endereco").value;
destino = rsDestino.fields("Endereco").value;
var myOptions = {
zoom:7,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var request = {
origin: origem,
destination: destino,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
var rsGravar = new ActiveXObject("ADODB.Recordset");
rsGravar.Open("Select * From tblDestino Where Endereco = '" + destino + "'", cn, 1, 3);
rsGravar.Edit;
rsGravar.fields("Distancia").value = response.routes[0].legs[0].distance.value;
rsGravar.Update;
}
});
rsDestino.MoveNext();
}
rsOrigem.Close();
rsDestino.Close();
rsGravar.Close();
cn.Close();
</script>
</body>
</html>
答案 0 :(得分:0)
我怀疑您在using loops and closures时遇到JavaScript中的常见问题。根据您的描述,实际上只使用循环中的最后一个值。 directionsService.route
使用回调,很可能变量destino
始终引用循环中的最后一个值。
尝试使用闭包来封装代码以调用directionsService.route
,如下所示:
while(!rsDestino.eof) {
origem = rsOrigem.fields("Endereco").value;
destino = rsDestino.fields("Endereco").value;
(function(origin, dest){
//use variable 'origin' and 'dest' in the code
var myOptions= ...
var request = ...
directionsService.route ....
})(origem, destino);
}