Клуб API Карт

Ошибки при создании геообъектов

Пост в архиве.
При создании рандомных 100 placemark и 50 polyline в console log Google Chrome сыпется следующее:

combine.xml?modules=QuQv0a0-0*0b1n1a1o1b1c1d1p1e1r1g1h1i1k1l1v1m1x1_0c2k2l2m2n2o0e2D2E2F2G2H2C2K0d2…:516 Uncaught TypeError: Cannot read property '1' of undefined

combine.xml?modules=QuQv0a0-0*0b1n1a1o1b1c1d1p1e1r1g1h1i1k1l1v1m1x1_0c2k2l2m2n2o0e2D2E2F2G2H2C2K0d2…:212 Uncaught TypeError: Cannot read property 'getBounds' of undefined

combine.xml?modules=QuQv0a0-0*0b1n1a1o1b1c1d1p1e1r1g1h1i1k1l1v1m1x1_0c2k2l2m2n2o0e2D2E2F2G2H2C2K0d2…:215 Uncaught TypeError: Cannot read property 'destroy' of undefined


function cr_graph() {
        //Очищаем карту от геообъектов и добавляем метки
        map.geoObjects.removeAll();
        for (var i = 0; i < 100; i++) {
            var center = map.getCenter();
            center = [55.758 +(Math.random() * 2)/500,37.63 +(Math.random() * 2)/100];
            center = {
                coords: center,
                get: function(e) { return this.coords; }
            };
            cr_point(center);   
        }
        var crd = [];
        //Обходим метки и добавляем между ними случайные линии
        map.geoObjects.each(function (el) {
            if (el.geometry.getType() == "Point") {
                crd.push(el.geometry.getCoordinates());
            }
        });
        function rand_el(crd) { return crd[Math.floor(Math.random() * (100 - 0 + 1)) + 0];  }
        for (var i = 0; i < 50; i++) {
            cr_line([rand_el(crd),rand_el(crd)]);
        }       
    }
3 комментария

Скорее всего ошибка в вашей логике, но по приведенному коду этого сказать нельзя

На самом деле все отрабатывает несколько  (как повезет) первых раз замечательно, ошибки начинают сыпаться при повторной генерации геообъектов.
Sergey Konstantinov
27 января 2016, 22:55
У вас rand_el генерирует индексы от 0 до 100 вместо 99.