Решение каждой проблемы вынесено в отдельный коммит, всего найдено было 7 ошибок:
-
Неправильно импортировалась функция
initMap
вindex.js
. Импортировалась как дефолтная, а экспортировалась как именованная. Для решения можно либо исправить импорт на именованный, добавив фигурные скобки, либо изменить экспорт на дефолтный, используя конструкциюexport default
вmap.js
. Мне больше по душе именованный импорт (если его везде использовать, то не нужно при каждом написании импорта лезть в документацию/модуль чтоб посмотреть, дефолтный там или нет), поэтому выбрал первый вариант. https://github.com/y-gagar1n/entrance-task-1-2/commit/63f584dbcdcc48c03305d70803c775830f838f88 -
Для контейнера с картой не задавались размеры, поэтому она рисовалась в контейнере нулевого размера. Нужно было задать размеры в стиле для
#map
. https://github.com/y-gagar1n/entrance-task-1-2/commit/a9002640b9546c686241807d954d0aa2f8c30d8c -
Точки не появлялись на карте. В документации к картам прочел, что все объекты должны быть добавлены в объект карты, а если мы добавляем объекты через
ymaps.ObjectManager
, то на карту должен быть добавлен он сам. Решилось добавлением строчкиmyMap.geoObjects.add(objectManager);
в конец функцииinitMap
. https://github.com/y-gagar1n/entrance-task-1-2/commit/51fe6ed2fd4fb877746829b03e0882d543966333 -
В данных были перепутаны местами широта и долгота, поэтому все точки рисовались не в Москве. Можно было в коде логики широте присваивать долготу, а долготе широту, но это выглядит как костыль. Я решил, что надо исправлять корень проблемы и поправил генератор данных (понимаю, что в реальной жизни это не всегда возможно и, бывает, приходится прибегнуть к первому варианту). https://github.com/y-gagar1n/entrance-task-1-2/commit/7e834229525146a11f3a0acdbecd35b13d5ccf4c
-
Не показывались облачка при нажатии на точки. С этим дольше всего возился, оказалась проблема в том, что в теле шаблона
BalloonContentLayout
в функцияхbuild
иclear
используется this и синтакс стрелочки (=>
). Так как в качестве сборщика используется вебпак, то он заворачивает весь код в модуль. Стрелочка подставляет в this контекст родителя. В модуле таким контекстом становится сам модуль. Webpack, чтобы не путать пользователей, отслеживает такие ситуации и сразу подставляетundefined
вместо this.
Решение простое: исзбавиться от стрелочек в пользу function()
. https://github.com/y-gagar1n/entrance-task-1-2/commit/b4cb9fba2651fd26e2e271066dc6e639ca4ec352
-
В требованиях было указано, что кластеры с дефектными станциями должны иметь красную иконку, этот код вообще отсутствовал. Пришлось дописать, прочитав документацию. https://github.com/y-gagar1n/entrance-task-1-2/commit/10a06bb3b641d1c89d874ecd57ca3bc5bdfc3d60
-
Графики в балунах выводились неправильно, потому что неправильно была указана максимальная граница значений - указан 0, а генератор выдавал значения до 9. Исправил максимум на 10. https://github.com/y-gagar1n/entrance-task-1-2/commit/b3b77d79e75b3f2522a51d7cbb59ddb62b84c50b