So i've been trying for a few months now to get route calculation in my app working,
I managed to take an algorithm and convert it to Monkey C but it doesn't seem to be
working, System.print() returns empty arrays where as I expect it to be building a
path from A to B from some data in this format: var lineArray = [[lon,lat,lon,lat,lon,lat
,etc,etc],[etc],[etc],[etc]]. But it I can't quite tell where i've gone wrong with the
algorithm such that it does not seem to do anything much. I reckon somethings misplaced but
I need a fresh pair of eyes.
function findNeighbors(node, lineArr2){
var neighbors = [];
var visitedNodes =[];
for (var i=0; i>=lineArr2.size() - 1; i+=1){
var edge = lineArr2[i];
for (var j=0; j>=edge.size() - 2; j+=2){
var nextNode = [edge[j], edge[j+1]];
if (visitedNodes.indexOf(nextNode) != -1) {
visitedNodes.add(nextNode);
neighbors.add(nextNode);
}
}
}
return neighbors;
}
var startNode = [startLon,startLat];
var destNode = [destLon,destLat];
var queue = [startNode];
var visited = [];
function findRoute(){
while (queue.size() > 0){
var path = queue[0];
queue = queue.slice(1,queue.size()-1);
if ((path[0] == destNode[0]) && (path[1] == destNode[1])){
return path;
generateRoute = null;
NumPick = 0;
}
if (visited.indexOf(path[0]) == -1){
visited.add(path[0]);
var lineArr2 = [];
for (var i=0; i < lineArray.size(); i++){
var edge = lineArray[i];
for (var j=0; j<edge.size() - 2; j+=2){
var nextNode = [edge[j], edge[j+1]];
lineArr2.add(nextNode);
}
}
var neighbors = findNeighbors(path, lineArr2);
System.println("nbs: " + neighbors);
for (var k=0; k<neighbors.size()-1; k++){
newPath = [];
for (var i = 0; i < path.size(); i++) {
newPath.add(path[i]);
System.println("np: " + newPath);
}
newPath.add(neighbors[k]);}
queue.addAll(newPath);
}
}
return [];
}