Untitled

 avatar
unknown
plain_text
4 years ago
4.6 kB
4
Indexable
const {ipcRenderer} = require('electron')
let locationCoordinates = [];
var locationCount=""
let directionsService;
let directionsDisplay;
function initMap() {
   
   
    /*var distanceMatrix = []
    for (var i = 0; i < locationCount; i++) {
        distanceMatrix[i] = new Array(locationCount);
    }
    for (var i = 0; i < locationCount; i++) {
        for (var j = 0; j < locationCount; j++) {
            distanceMatrix[i][j] = calcDistance(locationCoordinates[i], locationCoordinates[j]);
        }
    }
    */
    //const start = new google.maps.LatLng(40.765470, 29.940592);
    //kargo başlangıç yeri
   
  
    var options = {
        zoom: 15,
        center: { lat: 40.765470, lng: 29.940592 },
    }
    const map = new google.maps.Map(document.getElementById("map"), options);
    directionsService = new google.maps.DirectionsService();
    directionsDisplay = new google.maps.DirectionsRenderer();
    directionsDisplay.setMap(map)

    ipcRenderer.invoke('get-latlongs').then(()=> console.log('')).catch((err)=> console.error('Error'));
    ipcRenderer.on("send-latlongs", (e, args) => {
       const receivedLists= JSON.parse(args)
      locationCoordinates= receivedLists;
     console.log(locationCoordinates)
     locationCount=locationCoordinates.length;
     const start ={ lat: 40.765470, lng: 29.940592 };
    var end={ lat: 40.76124439803489, lng:29.9436904870682} ; 
  //  var start = '40.765470, 29.940592';
  //  var end = '40.76124439803489, 29.9436904870682';
    function showRoute(start, destination) {
        let request = {
            origin: start,
            destination: end,
            travelMode: google.maps.TravelMode.DRIVING
        };
        directionsService.route(request, function (response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(response);
            let starter = new google.maps.Marker({
                position: start,
                map: map
            })
            let marker = new google.maps.Marker({
                position: destination,
                map: map
            })
            }
           
        })
    }
   
  //  var end={lat:'40.76124439803489' ,lng:' 29.9436904870682'}
    function calcDistance(start, destination) {
        let request = {
            origin: start,
            destination:destination,
            travelMode: google.maps.TravelMode.DRIVING
        };
        console.log(destination)
        var distance;
        directionsService.route(request, function (response, status) {
            if (status == google.maps.DirectionsStatus.OK) {
                var distance = response.routes[0].legs[0].distance.value;
                console.log(distance)
            }
            else {
                console.log("Distance couldn't be calculated.")
            } })
            console.log(distance)
        return distance
    }
function factorial(locationCount) {
   
    if (locationCount == 0) {
        return 1;
      
    }  
    return locationCount * factorial(locationCount - 1);
}

function shortestPath(locationCoordinates, locationCount, start) {
    var pathLength = 99999999999999
    var temp
    var tempArr
    var arr
    var fact = factorial(locationCount);
    var p = permute(locationCoordinates);
    for (var i = 0; i < fact; i++) {
        tempArr = p.next().value
        temp = calcPathLength(tempArr, locationCount, start)
        if (temp < pathLength) {
            pathLength = temp
            arr = tempArr
        }
  console.log(temp)
    }
    return arr
}
var shortestpath = shortestPath(locationCoordinates, locationCount, start);
showRoute(start, shortestpath[0]);
for (var i = 0; i < locationCount - 1; i++) {
    showRoute(shortestpath[i], shortestpath[i + 1])
}
  
    
function permute(arr) {
    var l = arr.length,
        used = Array(l),
        data = Array(l);
    return function* backtracking(pos) {
        if (pos == l) yield data.slice();
        else for (var i = 0; i < l; ++i) if (!used[i]) {
            used[i] = true;
            data[pos] = arr[i];
            yield* backtracking(pos + 1);
            used[i] = false;
        }
    }(0);
}


function calcPathLength(array, length, start) {
    var sum = calcDistance(start, array[0]);
    console.log(sum)
    for (var i = 0; i < length - 1; i++) {
        sum = sum + calcDistance(array[i], array[i + 1]);
    }
    console.log(sum)
    return sum;
    
} 
});
    
}
Editor is loading...