Я использую Google Distance Matrix API для возврата времени в пути по различным видам транспорта.Хотя иногда это работает, кажется, что результаты не всегда согласованы и выводятся в неправильном порядке.Я читаю из CSV Лата Лонга и имею ключ API премиум-аккаунта.Было бы неплохо сделать весь файл сразу, если это возможно (около 5500 записей).
var employee_data = data.split(/\r?\n|\r/);//Splits rows
var table_data = '<table class="table table-bordered table-striped">';
var item=0;
var long;
var lat;
var long2;
var lat2;
var loc1;
var loc2;
var flat;
var flong;
var flat2;
var flong2;
var transport;
var id;
var tcount=0;
for(var count = 0; count<employee_data.length; count++){
var cell_data = employee_data[count].split(",");
for(var cell_count=0; cell_count<cell_data.length; cell_count++){
if(item===0){
id=cell_data[cell_count];
}
else if(item===1){
lat=cell_data[cell_count];
flat = parseFloat(lat);
}
else if (item===2){
long=cell_data[cell_count];
flong = parseFloat(long);
}
else if(item===4){
lat2=cell_data[cell_count];
flat2=parseFloat(lat2);
}
else if(item===5){
long2=cell_data[cell_count];
flong2=parseFloat(long2);
}
item++;
if(item===6){
loc1 = {lat:flat, lng:flong};
loc2 = {lat:flat2, lng:flong2};
if(tcount<100){
calculateTime(loc1,loc2,id);
}
tcount++;
item=0;
}
}
}
function calculateTime(x,y,tcount){
var location1 = [x];
var location2 = [y];
var service = new google.maps.DistanceMatrixService;
service.getDistanceMatrix({
origins: location1,
destinations:location2,
travelMode: 'DRIVING',
}, callback);
}
function callback(response, status) {
try{
if (status == 'OK') {
var duration;
var distance;
var from;
var origins = response.originAddresses;
var destinations = response.destinationAddresses;
for (var i = 0; i < origins.length; i++) {
var results = response.rows[i].elements;
for (var j = 0; j < results.length; j++) {
var element = results[j];
distance = element.distance.text;
duration = element.duration.text;
from = origins[i];
var to = destinations[j];
}
}
console.log(duration);
}
}
catch(error){
console.log('error caught');
}
}