Показать сообщение отдельно
  #11 (permalink)  
Старый 31.05.2015, 13:48
Аспирант
Отправить личное сообщение для Dark19 Посмотреть профиль Найти все сообщения от Dark19
 
Регистрация: 29.04.2014
Сообщений: 82

Сообщение от рони Посмотреть сообщение
Dark19,
потому что асинхронность когда у сервера есть возможность тогда и отвечает - 1 запрос скажем обрабатывался 100ms а второй 10ms -- в результате ответ на второй пришёл быстрее ответа на первый.
ага, понял. У меня теперь не получается следующая задумка:
есть 4 центра(количество произвольно) со своими координатами
var centroids = [
            {
                object: "A",
                point: [50.4404, 30.5582]
            },
            {
                object: "B",
                point: [49.3905, 27.0426]
            },
            {
                object: "C",
                point: [48.4931, 32.2721]
            },
            {
                object: "D",
                point: [49.5623, 34.5573]
            }
        ];

и есть 6 точек(количество произвольно) со своими координатами
var points = [
            {
                point: [50.2153, 29.5036]
            },
            {
                point: [50.3561, 32.1842]
            },
            {
                point: [48.5515, 29.5915]
            },
            {
                point: [47.6686, 32.4040]
            },
            {
                point: [48.6972, 35.7438]
            },
            {
                point: [47.1016, 35.2604]
            }
        ];




И нужно перебрать точки так, чтобы распределить их между центрами: к какому центру точка ближе, тому она и принадлежит. Но выходит, что при каждой итерации узнается только дистанция к каждому центру определенной точки, перебрать и узнать к какому центру эта точка ближе не получается. Перебрать точки на близлежащую во внутреннем цикле невозможно, а вне если сохранять дистанции в массив или обьект, то вне функции его уже не видно. Как можно перебрать значения и распределить точки по центрам? Может подскажите как внутри функции их перебрать, а то я что-то вообще не могу придумать ничего?
Привожу полный код:
var centroids = [
            {
                object: "A",
                point: [50.4404, 30.5582]
            },
            {
                object: "B",
                point: [49.3905, 27.0426]
            },
            {
                object: "C",
                point: [48.4931, 32.2721]
            },
            {
                object: "D",
                point: [49.5623, 34.5573]
            }
        ];

        var points = [
            {
                point: [50.2153, 29.5036]
            },
            {
                point: [50.3561, 32.1842]
            },
            {
                point: [48.5515, 29.5915]
            },
            {
                point: [47.6686, 32.4040]
            },
            {
                point: [48.6972, 35.7438]
            },
            {
                point: [47.1016, 35.2604]
            }
        ];

    var distance = 0;
    var i =0;
    var j = 0;
$('#map').click(function(e) {
        for(i;i<points.length;i++){

            for(j;j<centroids.length;j++){
                (function(a, b) {
                    ymaps.route([points[a]['point'], centroids[b]['point']]).then(function (router) {
                        distance = Math.round(router.getLength() / 1000);
                        var result =
                        {
                            mas: centroids[b]['object'],
                            point: points[a]['point'],
                            distance: distance
                        };
                    });
                })(i,j)
            }

            j=0;
        }
});

Последний раз редактировалось Dark19, 31.05.2015 в 14:02.
Ответить с цитированием