У меня есть веб-страница, которая отображает список городов в jQuery datatable. Мне нужно рассчитать расстояние каждого города от одного заданного местоположения и поместить результат в таблицу. Я могу зациклиться на строках таблицы и сделать звонок в Google DistanceMatrix, а затем правильно проверить результаты в функции обратного вызова. Однако в обратном вызове мне нужно обновить столбец в jQuery datatable с вычисленным расстоянием. Поскольку результат поступает асинхронно (только с результатом и статусом в качестве параметров), как я могу определить, какой результат в массиве return применяется к какому из моих строк данных?Сохранить результат Google maps DistanceMatrix в список пар-отправителя-источника
Предполагаю, что я мог бы искать данные для города, возвращенные в каждом элементе результата, но вызов DistanceMatrix часто преобразовывал («геокодированный»?) Мои исходные параметры поиска в более конкретные строки местоположения перед возвратом.
Пример кода:
var origins = ["Portland, OR"];
for (var i = 0; i < oTable.fnGetNodes().length; i++) {
//build a destinations array resembling the one spoofed in the next row
//assume < 25 entries or else batch processing
}
var destinations = ["Seattle, WA", "San Francisco, CA"];
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix({
origins: origins,
destinations: destinations,
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.DirectionsUnitSystem.IMPERIAL,
avoidHighways: false,
avoidTolls: false
}, (function (response, status) {
if (status == google.maps.DistanceMatrixStatus.OK) {
for (var i = 0; i < response.originAddresses.length; i++) {
var results = response.rows[i].elements;
for (var j = 0; j < results.length; j++) {
var distance = response.rows[0].elements[j].distance.text;
//how do I know which row number to update? Using j here doesn't match
//correctly on the order of rows. I could search my data table on city but
//result (coded) values frequently differ from my table data
//var rowNumberToUpdate = ??;
oTable.fnUpdate(distance, *rowNumberToUpdate*, column6);
}
}
}
})
);
Значения пунктов назначения [j], как представляется, не имеют правильной комбинации orig/dest в нем ... следовательно, мой вопрос. Однако, возможно, проблема существует в вызове oTable.fnGetNodes(), который я создаю для создания исходного массива ... возможно, это не сохраняет порядок ...? –