Jquery 在此处对航路点进行排序

Jquery 在此处对航路点进行排序,jquery,here-api,Jquery,Here Api,我从一个web服务收到随机选择的坐标列表。当我在诺基亚这里绘制它们并试图找出其中最短的路线时,结果是一条分散的路线 进一步向下钻取显示这些坐标未排序 在将坐标转换为路线点列表时,是否有任何方法对坐标进行排序,或者我必须在绘制坐标之前对所有坐标进行排序?提前谢谢 代码如下所示 router = new nokia.maps.routing.Manager(); var onRouteCalculated = function (observedRouter, key, value)

我从一个web服务收到随机选择的坐标列表。当我在诺基亚这里绘制它们并试图找出其中最短的路线时,结果是一条分散的路线

进一步向下钻取显示这些坐标未排序

在将坐标转换为路线点列表时,是否有任何方法对坐标进行排序,或者我必须在绘制坐标之前对所有坐标进行排序?提前谢谢

代码如下所示

    router = new nokia.maps.routing.Manager();
    var onRouteCalculated = function (observedRouter, key, value) {
        if (value == "finished") {
            var routes = observedRouter.getRoutes();

            //create the default map representation of a route
            mapRoute = new nokia.maps.routing.component.RouteResultSet(routes[0]).container;
            map.objects.add(mapRoute);

            //Zoom to the bounding box of the route
            map.zoomTo(mapRoute.getBoundingBox(), false, "default");
        } else if (value == "failed") {
            alert("The routing request failed.");
        }
    };
    router.addObserver("state", onRouteCalculated);
    var modes = [{
        type: "shortest",
        transportModes: ["car"],
        options: "avoidTollroad",
        trafficMode: "default"
    }];

 function CreateRouteByMultipleWaypoints() {
        if (typeof (mapRoute) != 'undefined' || mapRoute != null) {
            map.objects.remove(mapRoute);
        }
        router.clear();
        var waypoints = new nokia.maps.routing.WaypointParameterList();
        var RUidsByChoice = $('#dialogforPlotRoute').text().trim().split(',');
        for (index = 0; index < selectedcoOrdinatestoPlanRoute.length; index++) {
            waypoints.addCoordinate(new nokia.maps.geo.Coordinate(parseFloat(selectedcoOrdinatestoPlanRoute[index].split('>')[0]), parseFloat(selectedcoOrdinatestoPlanRoute[index].split('>')[1])));
        }
        router.calculateRoute(waypoints, modes);
    }
router=new nokia.maps.routing.Manager();
var onRouteCalculated=函数(ObservedOuter、键、值){
如果(值=“已完成”){
var routes=observedRouter.getRoutes();
//创建管线的默认地图表示形式
mapRoute=new nokia.maps.routing.component.RouterResultSet(routes[0])容器;
map.objects.add(mapRoute);
//缩放到管线的边界框
zoomTo(mapRoute.getBoundingBox(),false,“默认值”);
}else if(值==“失败”){
警报(“路由请求失败”);
}
};
router.addObserver(“状态”,onRouteCalculated);
var模式=[{
键入:“最短”,
运输方式:[“汽车”],
选项:“避免通行费”,
流量模式:“默认”
}];
函数CreateRouteByMultipleWaypoints(){
if(typeof(mapRoute)!=“未定义”| | mapRoute!=null){
map.objects.remove(mapRoute);
}
router.clear();
var waypoints=新的nokia.maps.routing.WaypointParameterList();
var RUidsByChoice=$('#dialogforPlotRoute').text().trim().split(',');
对于(索引=0;索引')[0])、parseFloat(SelectedCoordinatesPlanRoute[index].split('>')[1]);
}
路由器计算器输出(航路点、模式);
}

我使用旅行商问题算法在所有给定坐标中找出最短路径

function sortWayPoints() {
        var coordinatsArraytoPlot = selectedcoOrdinatestoPlanRoute;
        //Starting location some hard coded value
        var startPoint = new nokia.maps.geo.Coordinate(39.7391500, -104.9847000);
        var mainArray = [];
        mainArray.push(startPoint);
        while (coordinatsArraytoPlot.length > 0) {
            var sortArr = [];
            for (index = 0; index < coordinatsArraytoPlot.length; index++) {
                var coordinate2 = new      nokia.maps.geo.Coordinate(parseFloat(coordinatsArraytoPlot[index].split('>')[0]), parseFloat(coordinatsArraytoPlot[index].split('>')[1]));
                var dist = startPoint.distance(coordinate2);
                sortArr.push(dist);
            }
            var test = sortArr[0];
            var lessiNDEX = 0;
            for (var i = 1; i < sortArr.length; i++) {
                if (sortArr[i] < test) {
                    test = sortArr[i];
                    lessiNDEX = i;
                }
            }
            // The co ordinates are available in format "lat>long" so i have to 
            //split them and convert them to parseflot to get compatible result
            startPoint = new nokia.maps.geo.Coordinate(parseFloat(coordinatsArraytoPlot[lessiNDEX].split('>')[0]), parseFloat(coordinatsArraytoPlot[lessiNDEX].split('>')[1]));
            mainArray.push(startPoint);
           //Remove calculated co ordinate from main array
            coordinatsArraytoPlot.splice(lessiNDEX, 1);
        }
//mainArray will contain all sorted Co ordinates
}
函数sortWayPoints(){
var CoordinarRayTopLot=所选的Coordinates平面路线;
//起始位置某些硬编码值
var startPoint=new nokia.maps.geo.Coordinate(39.7391500,-104.9847000);
var mainArray=[];
mainArray.push(起始点);
while(coordinarsarraytoplot.length>0){
var-sortArr=[];
对于(索引=0;索引')[0]),parseFloat(coordinarraytoplot[index].split('>')[1]);
var dist=起点距离(坐标2);
索塔推(距离);
}
var测试=Sortar[0];
var-lessiNDEX=0;
对于(变量i=1;ilong”,因此我必须
//拆分它们并将它们转换为parseflot以获得兼容的结果
startPoint=new nokia.maps.geo.Coordinate(parseFloat(coordinarraytoplot[lessiNDEX].split('>')[0]),parseFloat(coordinarraytoplot[lessiNDEX].split('>')[1]);
mainArray.push(起始点);
//从主阵列中删除计算的坐标
坐标RAYTOPLOT拼接(lessiNDEX,1);
}
//mainArray将包含所有已排序的坐标
}