Javascript 谷歌地图优化航路点并与原始序列相关

Javascript 谷歌地图优化航路点并与原始序列相关,javascript,google-maps,Javascript,Google Maps,我正在使用googlemaps api从数据库中路由和优化一组航路点。航路点以随机顺序输入。一旦通过谷歌地图对航路点进行优化,以创建正确的路线顺序,我需要一种方法将它们与原始序列关联起来,以便在数据库中更新路线顺序 例如,数据库中的原始数据可能如下所示(LoadNum开始时为空): 谷歌地图优化了路线后,地址可以稍加更改,使之与每条街道上的最接近匹配,如下所示 LoadNum Order address City State Zip blank 2 120-

我正在使用googlemaps api从数据库中路由和优化一组航路点。航路点以随机顺序输入。一旦通过谷歌地图对航路点进行优化,以创建正确的路线顺序,我需要一种方法将它们与原始序列关联起来,以便在数据库中更新路线顺序

例如,数据库中的原始数据可能如下所示(LoadNum开始时为空):

谷歌地图优化了路线后,地址可以稍加更改,使之与每条街道上的最接近匹配,如下所示

LoadNum Order address   City    State   Zip
       blank    2   120-160 Main Street Cleveland   OH  12345
       blank    1   200-300 Elm Street  Chicago IL  12345
       blank    3   678 Market Street   Beverly Hills   CA  90210
GoogleMaps还返回一个我想在数据库中指定为loadnumber的路由段编号,但我无法保证匹配。如果我能将一个标识符(订单号)传递给googlemaps,并将其与该记录一起返回,那将是理想的,因此即使地址发生了变化,我也知道订单号“x”是stop 1

下面的代码片段,首先是JavaScript,在底部附近,我将routeSegment和EndAddress捕获到一个变量中(现在实际上是一个文本字段,我可以看到它):

在我的示例中,参数是城市和州,但这还不够具体。长短不一的是,有没有一种方法可以通过GoogleMaps Javascript API传递一个识别参数,该参数将被返回/维护,或者有没有另一种方法可以实现我想要的


谢谢

DirectionRoute对象(
代码中的route
变量)包含定义原始航路点和重新排序航路点之间关系的信息。查看文档中的属性
航路点\u顺序

如果优化航路点设置为,此字段将包含输入航路点的重新排序排列。例如,如果输入为:

产地:洛杉矶

航路点:达拉斯、班戈、凤凰城

目的地:纽约

优化后的输出顺序如下:

产地:洛杉矶

航路点:凤凰城、达拉斯、班戈

目的地:纽约

然后该字段将是一个包含值[2,0,1]的数组。请注意,航路点的编号是以零为基础的。 如果任何输入航路点的“中途站”设置为“假”,则此字段将为空,因为路线优化不适用于此类查询


太好了,非常感谢。我已经查阅了有关航路点(如下)的文档,但没有找到我要查找的内容:
LoadNum Order address   City    State   Zip
       blank    2   120-160 Main Street Cleveland   OH  12345
       blank    1   200-300 Elm Street  Chicago IL  12345
       blank    3   678 Market Street   Beverly Hills   CA  90210
 directionsService.route({
            origin: document.getElementById('StartBoxAjax').value,
            destination: document.getElementById('EndBoxAjax').value,
            waypoints: waypts,
            optimizeWaypoints: true,
            travelMode: 'DRIVING'
        }, function (response, status) {
            if (status === 'OK') {
                directionsDisplay.setDirections(response);
                var route = response.routes[0];
                var string = [];
                document.getElementById('<%=JScriptParm.ClientID %>').value = ""
                var summaryPanel = document.getElementById('directions-panel');
                summaryPanel.innerHTML = '';
                // For each route, display summary information.
                for (var i = 0; i < route.legs.length; i++) {
                    var routeSegment = i + 1;
                    summaryPanel.innerHTML += '<b>Route Segment: ' + routeSegment +
                        '</b><br>';
                    summaryPanel.innerHTML += route.legs[i].start_address + ' to ';
                    summaryPanel.innerHTML += route.legs[i].end_address + '<br>';
                    summaryPanel.innerHTML += route.legs[i].distance.text + '<br><br>';
                    //document.getElementById('JScriptParm').value += routeSegment;
                    document.getElementById('<%=JScriptParm.ClientID %>').value += routeSegment + ',' + route.legs[i].end_address + '|';
                   // string += routeSegment + ',' + route.legs[i].end_address + '|';
                   // document.getElementById('<%=JScriptParm.ClientID %>').value = string;

                }
 protected void AssignLoadNum(string city, string state, string stop)
    {
        //Call Stored proc to update load number.
        SqlConnection conn = new SqlConnection();
        SqlCommand cmd = new SqlCommand();
        string connStr = ConfigurationManager.ConnectionStrings["FurnitureDB"].ConnectionString;
        conn.ConnectionString = connStr;
        conn.Open();
        cmd.CommandType = System.Data.CommandType.StoredProcedure;
        cmd.Connection = conn;
        cmd.Parameters.Add("@state", SqlDbType.VarChar).Value = state;
        cmd.Parameters.Add("@city", SqlDbType.VarChar).Value = city;
        cmd.Parameters.Add("@stop", SqlDbType.Int).Value = Convert.ToInt32(stop);


        cmd.CommandText = "UpdateLoadOrd";
        cmd.ExecuteNonQuery();
        //var dt = new DataTable();

    }