Javascript 谷歌地图V3-保存到数据库

Javascript 谷歌地图V3-保存到数据库,javascript,database,maps,Javascript,Database,Maps,我想将距离路线的距离存储在access数据库中,我就快到了,但只有最后的距离提交到数据库中。你能帮助我吗? 只有一个地址作为起始地址,我尝试用四个地址作为目的地址。无论如何谢谢你,比尔 <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title>Google Maps JavaScript API</title>

我想将距离路线的距离存储在access数据库中,我就快到了,但只有最后的距离提交到数据库中。你能帮助我吗? 只有一个地址作为起始地址,我尝试用四个地址作为目的地址。无论如何谢谢你,比尔

<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>

谷歌地图JavaScript API
var directionsService=new google.maps.directionsService();
原生质变种;
var destino;
var strConn=“Provider=Microsoft.Jet.OLEDB.4.0;数据源=Z:\\Projetos\\GoogleMaps\\GoogleMaps.mdb;”
//数据库连接
var cn=新的ActiveXObject(“ADODB.Connection”);
cn.Open(strConn);
//记录集
var rsOrigem=新的ActiveXObject(“ADODB.Recordset”);
var sqlOrigem=“选择*fromtblorigem”;
rsOrigem.Open(sqlOrigem,cn);
var rsDestino=新的ActiveXObject(“ADODB.Recordset”);
var sqlDestino=“选择*fromtblestino”;
rsDestino.Open(sqlDestino,cn);
rsOrigem.Movefirst();
rsDestino.Movefirst();
而(!rsDestino.eof){
origem=rsOrigem.fields(“Endereco”).value;
destino=rsDestino.字段(“Endereco”).值;
变量myOptions={
缩放:7,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
var请求={
产地:origem,
目的地:destino,
travelMode:google.maps.Directions travelMode.DRIVING
};
路由(请求、功能(响应、状态){
if(status==google.maps.directionstatus.OK){
var rsGravar=新的ActiveXObject(“ADODB.Recordset”);
rsGravar.Open(“从tblDestino中选择*,其中Endereco='”+destino+“'”,cn,1,3);
rsGravar.Edit;
rsGravar.fields(“distance”).value=response.routes[0]。legs[0]。distance.value;
rsGravar.Update;
}
});
rsDestino.MoveNext();
}
rsOrigem.Close();
rsDestino.Close();
rsGravar.Close();
cn.Close();

我怀疑您在使用JavaScript时遇到了一个常见问题。根据您的描述,实际上只使用循环中的最后一个值<代码>方向服务。route使用回调,变量
destino
很可能总是引用循环中的最后一个值

尝试使用闭包封装代码以调用
DirectionService.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);
}