dimik / ymaps

ymaps extensions and examples
93 stars 83 forks source link

MultiGeocoder путает порядок геокодирования #1

Closed PekopT closed 12 years ago

PekopT commented 12 years ago

Как может быть такое??

на скрине http://screencast.com/t/WX9undoLFyA

первые шесть адресов - это порядок элементов в массиве получаемом из моей системы: for (var k in addrArr) { if(addrArr[k].addr) points.push(addrArr[k].addr); console.log(addrArr[k].addr) x++; }

вторые, выделенные шесть адресов - порядок массива после геокодирования:

var multiGeocoder = new MultiplyGeocoder({ results: 1 }); multiGeocoder .geocode(points) .then( function (res) { var iterator = res.geoObjects.getIterator(); var next;

            while(next = iterator.getNext()) {
                console.log(next.properties._i.text)
            }

);

Что это и как с этим бороться?

dimik commented 12 years ago

У меня совпадает порядок и в случае итератора и через eachhttp://dimik.narod.ru/ymaps/multiply-geococder/  PS: никогда не используй педалиnext.properties._i.text 03.08.2012, 01:48, "Alexander" reply@reply.github.com:Как может быть такое??на скринеhttp://screencast.com/t/WX9undoLFyAпервые шесть адресов - это порядок элементов в массиве получаемом из моей системы:    for (var k in addrArr) {        if(addrArr[k].addr) points.push(addrArr[k].addr);        console.log(addrArr[k].addr)        x++;    }вторые, выделенные шесть адресов - порядок массива после геокодирования:var multiGeocoder = new MultiplyGeocoder({ results: 1 });    multiGeocoder        .geocode(points)        .then(            function (res) {                var iterator = res.geoObjects.getIterator();                var next;                while(next = iterator.getNext()) {                    console.log(next.properties._i.text)                });Что это и как с этим бороться?---Reply to this email directly or view it on GitHub:https://github.com/dimik/ymaps/issues/1-- с уважением,Поклонский Дмитрий

PekopT commented 12 years ago

Педали то я не использую - это для отладки.

тем не менее это большая и очень странная проблема. у меня больше 50 точек на картах, 6 взял для примера. Всё путается.

dimik commented 12 years ago

Сделай простой тест-кейс, -Массив значений для геокодирования и само геокодирование и всё.Т.е. чтобы не было лишнего и пришли ссылку03.08.2012, 12:59, "Alexander" reply@reply.github.com:Педали то я не использую - это для отладки. тем не менее это большая и очень странная проблема. у меня больше 50 точек на картах, 6 взял для примера.Всё путается.---Reply to this email directly or view it on GitHub:https://github.com/dimik/ymaps/issues/1#issuecomment-7478894-- с уважением,Поклонский Дмитрий

PekopT commented 12 years ago

http://satels-okna.ru/yamaptest/

Вот пример того что я делаю и собственно результат перепутанного порядка...

PekopT commented 12 years ago

http://screencast.com/t/6CLnvyu4Of

dimik commented 12 years ago

Похоже что виновата реализация упорядоченной коллекции ymaps.GeoObjectArray в АПИ Завтра дойду до разработчиков, покажу им эти тесты, о результатах отпишу 04.08.2012, 01:46, "Alexander" reply@reply.github.com:http://screencast.com/t/6CLnvyu4Of---Reply to this email directly or view it on GitHub:https://github.com/dimik/ymaps/issues/1#issuecomment-7495522-- с уважением,Поклонский Дмитрий

PekopT commented 12 years ago

Хорошо, большое спасибо - будем ждать :)

dimik commented 12 years ago

Так и оказалось - проблема в том что ymaps.GeoObjectArray нормализует индексы, чтобы избежать sparse-массивов.Правильно это или нет - большой вопрос, мне кажется что неправильно. Пока решение - временно аггрегировать полученные геообъекты в обычном js-массиве и перекладывать в GeoObjectArray в конце. Код на гитхабе обновилhttps://github.com/dimik/ymaps/blob/master/multi-geocoder.js 06.08.2012, 00:35, "Alexander" reply@reply.github.com:Хорошо, большое спасибо - будем ждать :)---Reply to this email directly or view it on GitHub:https://github.com/dimik/ymaps/issues/1#issuecomment-7512878-- с уважением,Поклонский Дмитрий