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