Клуб API Карт

Редактор многоугольников: открытие и сохранение. Uncaught TypeError: Cannot read property 'isLeaf' of undefined

darkdaemon1
7 июня 2016, 01:15

Здравствуйте! Делаю простой редактор многоугольгиков с возможностью открытия и сохранения координат. В целом все работает, но при повторном открытии карты и наведении мышки на промежуточную точку между двух вершин выходит ошибка:

Uncaught TypeError: Cannot read property 'isLeaf' of undefined

Вот пример. Попробуйте сделать многоугольник, чтобы координаты сохранились в текстовое поле, а потом отредактировать его:

https://jsfiddle.net/jat6eomk/1

Пробовал делать myMap и myPolygon глобальными переменными - не помогло. Принудительное удаление этих объектов при открытии координат на карте - не помогло. Пробовал отказаться от события drawingstop и вынес функцию на отдельную кнопку - тоже не помогло.

6 комментариев
1. При любых проблемах подключайте API в mode=debug
2. На вход подавались координаты в текстовом виде, да и еще не полностью обработанные (с "дыркой")
см рабочий пример - https://jsfiddle.net/jat6eomk/3/
thekashey,
Благодарю за ответ, но ошибка не ушла :( Кроме "Cannot read property 'isLeaf' of undefined" в примере №3 вылезла еще одна ошибка: "GeoToGlobalPixels.toGlobalPixels: не передан параметр point"


Координаты подавались без дырки. После функции split у массива poly последний элемент - пустой, поэтому его и игнорировал через "poly.length - 1". Заметил, что первый и последний элементы массива координат - одинаковые. Это играет какую-то роль при построении многоугольника?
thekashey,
Вот пример (я убрал отслеживание события "drawingstop", ошибка возникает и без него) :
https://jsfiddle.net/jat6eomk/5/
レクセイ
8 июня 2016, 14:49
darkdaemon1,
Некорректно сформирован массив координат `poly` (присутствует пустая строка)
Столкнулся с подобной проблемой при добавлении Rectangle на карту, на которой уже были размещены Polygon'ы. Полигоны отрабатывали корректно. Ошибки в production'е не выводились. Оказалось, что данные, по которым строятся уже добавленные полигоны, были не совсем корректны. Для каждой точки было указано не два числа, а несколько:

[[ 55.70704321640123, 37.72580646299963, 55.70704321640123, 55.70704321640123, 55.70704321640123, 55.70704321640123, 55.70704321640123, 55.70704321640123, 55.70704321640123,55.70704321640123 ],
[55.70696143572265, 37.726018357511826, 55.70696143572265, 55.70696143572265, 55.70696143572265, 55.70696143572265, 55.70696143572265, 55.70696143572265, 55.70696143572265, 55.70696143572265 ],
[55.70650709548924, 37.72547923349982, 55.70650709548924, 55.70650709548924, 55.70650709548924, 55.70650709548924, 55.70650709548924, 55.70650709548924, 55.70650709548924,
55.70650709548924]]


Т.е. для постороения полигонов эти данные подходят, ошибки не выдают, а в дальнейшем при добавлении на карту еще одного полигона, выдается упомянутая ошибка. Почему бы не сделать проверку на корректность данных точек хотя бы при mode=debug ?
Обновлено 20 мая, 10:24
y.mudrik,
Здравствуйте, в Клубе не публикуются вопросы пользователей.


Технические вопросы Вы можете задать на Stack Overflow: https://ru.stackoverflow.com/questions/tagged/yandex-maps-api