Skip to content

Latest commit

 

History

History
586 lines (373 loc) · 37.1 KB

CHANGELOG.md

File metadata and controls

586 lines (373 loc) · 37.1 KB

Список изменений

[2.1.2]

  • Исправлена ошибка, при которой в кластеризаторе могли пропадать кластеры
  • Обновлены типы Яндекс Карт

[2.1.1]

Изменения и улучшения

  • Внедрены улучшения производительности для Vue 3. Теперь будет рендериться меньше элементов. Особенно улучшения будут заметны тем, кто использовал множество полигонов
  • Улучшена производительность при обновлении данных и использовании кластеризатора
  • Улучшена производительность при отрисовке попапов Default-маркеров
  • Добавлен экспорт vue-yandex-maps/css для удобного доступа (только для случаев, когда CSS не зарегался автоматически)
  • Доработано API ранее внутренней функции createYmapsOptions, функция добавлена в документацию вместе с гайдом по ручной установке библиотеки

Исправления ошибок

  • Исправлена ошибка, при которой маркеры могли крашить карту при задании недостаточно подробного ключа или отложенной отрисовке (например, через v-if)

[2.1.0]

В данной версии добавлен упущенный функционал ymaps3.suggest/ymaps3.router, улучшены старые функции и добавлены новые, исправлено несколько ошибок, а также обновлена версия библиотеки типов Яндекса.

Поддержка токенов API ymaps3

Добавлен новый параметр при инициализации: servicesApikeys. Позволяет задавать ключи для Интерфейсов API Яндекс Карт.

На данный момент поддерживается два параметра: suggest и router - позволяют использовать ymaps3.suggest и ymaps3.route соответственно.

Таким образом, в библиотеку был добавлен ранее пропущенный функционал. Также добавлено два новых примера и обновлена документация API ymaps3.

Изменения и улучшения

  • useYMapsLocationFromBounds переименована в getLocationFromBounds. Старое название было оставлено для обратной совместимости
  • Добавлены новые функции: getBoundsFromCoords и getCenterFromCoords
  • В getLocationFromBounds добавлена поддержка автоматического округления и коррекции зума параметрами roundZoom и comfortZoomLevel
  • Экспортирован тип YandexMapGetLocationFromBoundsOptions с настройками getLocationFromBounds

С этими функциями разработчик теперь может силами библиотеки реализовать тот же функционал, что реализован в пропсе zoomOnClusterClick кластера.

Исправления ошибок

  • Внедрён костыль, выполняющий preventDefault на встроенные кнопки Яндекса, чтобы они не вызывали submit на <form> (если таковая была).
    • Изменение не должно ничего сломать, но если сломало - пишите
    • Данный костыль будет удалён после исправления ошибки со стороны Яндекса
  • Исправлена работа initializeOn: onPluginInit. Настройка не работала и никто этого не замечал всё это время :D

Библиотека типов Яндекса обновлена до 0.0.22

  • YMapDefaultSatelliteLayer был удалён из типизации - а значит может быть в будущем удалён совсем.
    • Во избежание Breaking Changes, в библиотеку были добавлены типы IYandexMapDefaultSatelliteLayer и IYandexMapDefaultSatelliteLayerProps, а также предупреждения как на странице примеров, так и в документации этого компонента
    • Разработчикам более не рекомендуется использовать этот компонент, так как он может быть удалён Яндексом в любой момент
  • Добавлен тип showScaleInCopyrights в настройки YandexMap
    • Соответственно, из нашей библиотеки был удалён костыль типов, добавленный в 2.0.0
  • Яндекс заменили в своей типизации все одинарные кавычки (') на двойные (")!!
  • Судя по всему, была добавлена функция setCamera в модельку YandexMap
  • Добавлена настройка transparent в YMapControl (делает компонент прозрачным без фона и теней)
    • В библиотеке для YandexMapControl поддержали параметр settings (ранее настроек у контрола не было)
    • Также был обновлён пример "Элементы управления" в документации нашей библиотеки
  • В DefaultFeaturesLayer и DefaultSchemeLayer добавлен параметр source, а также параметр layers вместо layersInfo
    • Вряд вам пригодится эта информация
  • Яндекс исправили типы YMapScaleControl
    • Убран костыль с типом этого компонента на стороне нашей библиотеки

[2.0.1]

  • Снижено число ререндеров одних и тех же кластеров при выполнении зума и прочих действий

[2.0.0]

Это - первый стабильный мажорный релиз vue-yandex-maps за более чем двухлетний период.

В этой версии главным изменением стал переход на Яндекс Карты 3.0, а помимо всего прочего - улучшенная поддержка TypeScript, Nuxt, и в целом Developer Experience.

Что дальше?

На короткой перспективе планируется разработать библиотеку для упрощения работы с Yandex Maps API, ибо многие фичи со старых Карт доступны теперь только так.

На более длинной (в течение 2024) - отказ от Vue 2 и части костылей, замена существующих тестов на Vitest, и, конечно, поддержка и развитие библиотеки.

Разумеется, ожидается, что после выхода новой версии в тэг latest, пойдёт большое количество пожеланий и сообщений об ошибках - их буду стараться чинить по мере сил и возможностей, и аналогичное - про отслеживание изменений от Яндекса для обновления фич обертки.

Всех поздравляю со стабильным релизом и желаю приятного пользования! Ваш @daniluk4000.

Also, English translation is currently not supported in docs. If somebody needs that - please fill a feature request and/or vote for it with reactions. I'm just not sure if somebody needs English Translation for this library nowadays.

Изменения в этой сборке по сравнению с rc.14

Улучшения и исправления

  • Добавлен компонент YandexMapScaleControl
  • Незначительно улучшена производительность при изменении настроек <yandex-map>
  • Добавлен забытый Яндексом тип showScaleInCopyrights в settings <yandex-map>
  • Поле popup.content у DefaultMarker больше не является обязательным в типизации
  • Устранены ложнопозитивные ошибки типизации у всех v-model

Документация

  • Переработано множество старых примеров и добавлено множество новых
  • Добавлена отдельная страница со списком примеров
  • Обновлена ссылка на список изменений - теперь она ведёт на релизы
  • Раздел "О проекте" убран из хедера и приведён в релизное состояние
  • Добавлен дисклеймер об обновлении на версию 2.x
  • Добавлена информация об установке в Astro
  • Добавлен раздел документации с API ymaps3

Техническое

  • Из сборки удалён CHANGELOG.md. Всё равно его в ней никто не читает, а сборка станет чуть меньше по размеру (и не будет расти с каждым новым релизом)

[2.0.0-rc.14]

  • Исправлены редкие ошибки с реактивностью вложенных объектов внутри настроек компонентов Яндекса
  • Исправлен редкий краш карты, возникавший, если скрыть (unmount'нуть) компонент до того, как загрузится скрипт Яндекса
    • Наиболее ошибка могла быть заметна на медленном интернете

[2.0.0-rc.13]

Исправления ошибок

  • Исправлена ошибка, при которой cursor-grab мог потенциально привести к крашу страницы, если инициализация карты не была завершена
  • Теперь cursor-grab будет проверять ещё и на то, нажата ли кнопка мыши пользователя (:focus, :active), а не только перемещается ли карта

[2.0.0-rc.12]

Эта версия является предфинальной. Что осталось до релиза:

  • Внедрить новые примеры от Яндекса
  • Возможно, реализовать фичу с порядком координат (#200)
  • Протестировать библиотеку на одном крупном проекте внутри моей компании (там много полигонов)

Вполне вероятно, следующая версия будет уже 2.0.0.

Библиотека типов Яндекса обновлена до 0.0.21

  • sphericalMercator был признан deprecated. Есть какой-то новый пакет, который нужно установить из npm, что идёт вразрез со всем остальным. В библиотеке, пока что, SphericalMercator продолжит использоваться, и WebMercator появится, когда его можно будет импортировать через ymaps3.import (как остальные пакеты)
  • В controls-extra появился компонент YMapScaleControl. Пока что он не работает (его нельзя импортировать)
  • Убраны зависимости реакта и vue при установке библиотеки. Это должно решить ряд возникавших ранее конфликтов

Улучшения

  • Улучшена производительность при использовании cursor-grab
    • Больше всего это могло быть заметно, если включить cursor-grab при использовании большого числа маркеров
  • Существенно улучшена производительность кластера при работе на большом количестве маркеров
    • В частности, убраны страшные фризы при каждом зуме
    • Улучшения наиболее заметны в Vue 3
0129.4.mp4

Исправления ошибок

  • Исправлен потенциальный краш при срабатывании реактивности Default-маркера
  • Исправлена потенциальная утечка памяти на клиенте
  • Исправлена реактивность пропса readonly-settings

Техническое

  • Незначительно переработаны экспорты. Исправит проблемы, возникающие в Webstorm старых версий
  • Изменён текст ошибки, возникающей, когда у компонентов нет инстанса карты или родителя. Кроме того, эти ошибки больше не помечены как internal. Исправляет #195

Документация

  • Исправлена работа примера "Перетаскивание объектов"
  • Все стили в примерах из :style перемещены в <style>, чтобы не путать тех, кто это смотрит - люди начинали думать, что по другому нельзя задавать стили
  • В общие принципы компонентов добавлена информация о порядке координат Яндекса
  • В меню API добавлена ссылка на функцию "initYmaps"

[2.0.0-rc.11]

При установке этой версии настоятельно рекомендуется обновиться до последней версии Vue, чтобы обеспечить совместимость типизации.

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

Изменения

  • Теперь кластеризатор поддерживает маркеры с одинаковыми координатами
  • Теперь для всех маркеров кластеризатора, если у них нет id, ему будет автоматически задан случайно сгенерированный id
  • Событие updatedBounds больше не возвращается, если деактивирован zoomOnClusterClick
  • В карту добавлена настройка cursorGrab
  • Статичный CSS карты перемещён в отдельный файл CSS (ранее был в style DOM'а). Это должно упростить работу, если вам потребуется их перезаписать

zoomOnClusterClick

Переписан алгоритм зума для zoomOnClusterClick. Теперь больше не вычитается случайное расстояние, вместо этого zoom карты корректируется на целочисленное значение.

Дело в том, что на целых значениях zoom Яндекс не скрывает маркеры при их приближении к углам карты, а на остальных может скрыть. Почему это происходит в принципе - вопрос хороший.

Также добавлены параметры strategy, где можно включить старое поведение значением свойства boundsCorrect, а также параметр disableMinimalZoomCorrectDiff.

Функционал экспериментальный и может вызывать проблемы. Для этих целей и была оставлена возможность вернуться на старое поведение. Сообщайте, если что-то пойдёт не так.

getLocationFromBounds

Выдернут из скомпилированных исходников Яндекса тяжелым трудом и потом. Принимает на вход bounds и инстанс карты, возвращает zoom и center. zoom идеально соответствует тому, как считает Яндекс, координаты почему-то незначительно отличаются (возможно, я где-то ошибся).

По сути, портирована утилита requireCenterAndZoom из Карт 2.0.

Исправления ошибок

  • Исправлена редкая ошибка, при которой кластеризатор крашился, если вы резко убирали из него маркер или меняли настройка кластера. Теперь эта ошибка стала предупреждением в консоли, а кластер справится, если ему будет чего-то не хватать, отдав Яндексу пустой маркер.
  • Исправлена ошибка, при которой карта могла крашнуться, если создать и почти сразу уничтожить какой-либо элемент внутри неё

Документация

  • Переработан текст на главной странице
  • Добавлена секция API

И всех с прошедшим новым годом! :)

[2.0.0-rc.10]

Изменения

  • Минимальная версия @yandex/ymaps3-types установлена на 0.0.20
  • Добавлена возможность изменять время, которое библиотека ожидает для загрузки Яндекс.Карт и для отрисовки компонентов. Также добавлена возможность полностью отключить это поведение (ждать вечно). См. #147
  • Незначительно улучшена производительность запуска Карт

Документация

  • Исправлена работа tilt-а камеры в примере "Изменение позиции камеры"
  • Улучшена человекочитабельность документации хинта
  • В документацию кластеризатора добавлен параметр maxZoom

[2.0.0-rc.9]

Улучшения

  • Из зависимостей удалён @nuxt/kit - он по идее и так есть у всех, кто использует Nuxt 3, незачем его ставить остальным
  • Улучшены возможности по установке breaking-версий @yandex/ymaps3-types: теперь можно установить любую версию до 1.x (если Яндекс до неё дойдёт)

Добавлена совместимость с @yandex/ymaps3-types@0.0.20

  • Из YandexMapControl убран settings
  • В YandexMap добавлена поддержка тёмной темы
    • theme в DefaultSchemeLayer Яндекс признал deprecated - используйте theme в YandexMap
  • В кластер добавлен параметр maxZoom

[2.0.0-rc.8]

Улучшения

  • Добавлен компонент YandexMapDefaultSatelliteLayer для спутникового слоя

Исправления ошибок

  • Исправлена ошибка, при которой карта могла крашнуться при использовании real-settings-location

[2.0.0-rc.7]

Breaking Changes

  • Минимальная версия Vue поднята до 3.3

Исправления ошибок

  • Исправлена работа нового зума кластера для объектов, расположенных рядом

Улучшения

  • В Vue 3 был добавлен autocomplete слотов и их содержимого
  • Добавлен компонент YandexMapEntity

[2.0.0-rc.6]

Улучшения

  • Немного улучшена скорость запуска карты
  • Снижена вероятность краша карты при медленном интернете

Кластер

Добавлен новый параметр: zoomOnClusterClick! Как следует из названия, при клике на кластер произойдёт автоматический зум.

Из-за поведения Яндекса в зум встроена логика, высчитывающая область таким образом, чтобы маркеры в неё точно пропали, добавляя отступы для области на основе максимального расстояния между углами области.

По сути, пропс возвращает старое поведение кластеров при клике на них, но со своей реализацией. При нахождении багов или недочетов в логике - создавайте ишью!

Пропс принимает boolean или объект с параметрами duration (по умолчанию: 500) и easing.

И, даже если пропс не указан, при клике на кластер компонент теперь возвращает события trueBounds и updatedBounds ( точные и скорректированные координаты области), чтобы упростить свою реализацию этого функционала.

20231210-1331-44.6045347.mp4

[2.0.0-rc.5]

Breaking changes

  • Вариации position маркера left и right теперь откидывают на 100% вместо 50%
  • В кластере позиция маркеров теперь по умолчанию top-center left-center (то есть ровно по центру кружочка, которым обычно является маркер)
    • Вы можете изменить это поведение, передав position в clusterMarkerProps

Маркер

  • Добавлены параметры containerAttrs, wrapperAttrs и zeroSizes в YandexMapMarker:
    • Теперь контейнер YandexMapMarker будет иметь width: 0 и height: 0 по умолчанию, если передан position. Отключить (или форсировать) это поведение можно настройкой zero-sizes (boolean/null (по умолчанию: null))
    • Перезаписать и добавить свои стили, классы и другие атрибуты вы можете, используя новый пропс containerAttrs и wrapperAttrs (при передаче в них style он должен быть объектом)
  • Теперь маркер с 1 элементов разделился на 2: __ymap-marker (на него ставится width, height 0) и __ ymap-marker_wrapper (на него - translate и width fit-content, если есть translate (для корректной работы))
  • Добавлены вариации position top-center и bottom-center, которые будут задавать translateY в 50% вместо 100%
  • BREAKING: Вариации position left и right теперь откидывают на 100% вместо 50%
  • Добавлены вариации left-center и right-center

Кластер

  • Исправлен фатальный краш кластеров, при котором часть кластеров могла перестать отображаться
  • clusterMarkerProps теперь принимает доп. параметры из YandexMapMarker
  • Теперь кластеры центрируются автоматически (position top-center left-center)

Документация

  • Добавлен подробный Migration Guide

Рефакторинг

  • Изменена структура src/composables

Помогали в релизе

  • @zomkd (Документация)

[2.0.0-rc.4]

Новые возможности

position в YandexMapMarker

В YandexMapMarker добавлен параметр position (вне settings). Разработчик может использовать значение top left-center, чтобы сделать поведение как в Картах 2.0.

Подробная документация по доступным значениям (для чего это свойство нужно) доступна в документации компонентов ( Компоненты -> Основные -> YandexMapMarker).

Типизация

  • Добавлен и экспортирован тип YandexMapMarkerPosition

[2.0.0-rc.3]

Исправления ошибок

  • Исправлен запуск в Vue 2

Улучшена обработка параметров

При работе на реальном проекте столкнулись с тем, что Яндекс очень скупо объяснял, что пошло не так, если вы не указали обязательный параметр в settings.

Чтобы исправить это, была улучшена документация и добавлена дополнительная обработка параметров компонентов:

Сделаны обязательными settings в компонентах

  • YandexMapControls
  • YandexMapFeatureDataSource
  • YandexMapTileDataSource
  • YandexMapLayer
  • YandexMapDefaultMarker
  • YandexMapMarker
  • YandexMapFeature

Валидация будет проходить только на onMounted (перед подключением Яндекса) для случаев, когда настройки появляются позже, чем создаётся компонент.

Добавлена валидация обязательных параметров

  • YandexMap: location (только изменён текст ошибки)
  • YandexMapControls: position
  • YandexMapFeatureDataSource: id
  • YandexMapTileDataSource: id
  • YandexMapLayer: type
  • YandexMapDefaultMarker: coordinates
  • YandexMapMarker: coordinates
  • YandexMapFeature: geometry

Типизация

  • Из типизации YandexMapControlButton убран text

[2.0.0-rc.1]

Версия перешла в состояние Release Candidate! Это значит, что библиотека:

  • Полностью документирована, кроме Migration Guide
  • Готова к тестированию на продуктиве
  • Принимает тикеты с багами и пожеланиями
  • Крупных breaking-изменений вноситься не будет

Просим принять максимальное участие в тестировании. Переход библиотеки в тэг latest планируется в январе-феврале.

Документация

  • Добавлен базовый Migration Guide
  • Раздел "О проекте" дополнен информацией о планируемых сроках перехода библиотеки в стабильность и отличиях от прошлых версий

[2.0.0-beta.10]

С этим релизом версия 2.0 подошла к статусу Release Candidate.

Библиотека стабильна, полностью документирована (кроме гайда миграции) и готова к работе и тестированию сообществом.

Новые возможности

  • В кластер добавлен параметр clusterMarkerProps для изменения параметров маркера слота кластера.
  • Добавлен и экспортирован тип YandexMapListenerSettings

Документация

  • Добавлен раздел "Список компонентов"
  • Документированы все компоненты 🎉

[2.0.0-beta.9]

  • Теперь структура в DOM до отрисовки соответствует структуре после, включая width, height и прочее. Это решит, в том числе, проблемы отрисовки на SSR, когда карта визуально появлялась только после отрисовки, из-за чего вся страница прыгала

Т.е. до:

<div id="__app">
  <div class="__ymap_container" style="width:100%;height:100%;"></div>
</div>

После:

<div id="__app">
  <div class="__ymap" style="width:50dvw;height:75dvh;color:#000;position:relative;z-index:0;">
    <div class="__ymap_container" style="width:100%;height:100%;"></div>
    <div class="__ymap_slots" style="display:none;"></div>
  </div>
</div>

[2.0.0-beta.8]

Исправления ошибок

  • Исправлена работа реактивности циферок кластеров
  • Исправлен случайный фатальный краш при отрисовке кластеров
  • Исправлена ошибка, при которой библиотека иногда могла не работать в Nuxt 3

Документация

  • Завершена работа над секцией "Примеры". Добавлены последние примеры: Элементы управления и Хинты.

[2.0.0-beta.7]

В этой сборке были внедрены улучшения производительности. Что-то могло сломаться, в частности - реактивность.

Кластер

  • Параметр слота clustererObject переименован в clusterer
  • ЗНАЧИТЕЛЬНО улучшена производительность. Убраны костыли, поддержано кэширование Яндекса

Исправления ошибок

  • Исправлена ошибка, при которой содержимое попапа YandexMapDefaultMarker могло закрыться без действия пользователя, когда содержимое попапа было передано через слот #popup
  • Исправлена ошибка, при которой всегда триггерилось обновление settings компонента, если в нём была функция, даже если она не менялась
  • Исправлена ошибка, при которой default marker любил закрываться при клике куда угодно, кроме него
  • Внедрено поведение, при котором изменение объекта первого уровня в settings приведет к полной передаче этого объекта в Яндекс.
    Это сделано во избежание ситуаций, когда Яндекс требует полный набор данных, а передастся лишь кусок.
    Вы могли это заметить при изменении location.center - если изменился только один элемент массива, Яндексу передавался только он, хотя требовался полный массив

Типизация

  • Экспортирован тип YandexMapDefaultMarkerSettings с настройками маркера
  • Тип VueYandexMapClustererOptions переименован в YandexMapClustererOptions
  • Из типизации удалены vuefy и reactify - их подключение бесполезно в данной библиотеке, кроме того, Яндекс сломали Overload нашей библиотеки бесконечной рекурсией, добавив vuefy

Техническое

  • Из dependencies удалён rollup-plugin-copy, попавший туда по ошибке
  • Пакет обновлён до Vite 5

Документация

  • Добавлены примеры:
    • Попапы
    • Прямоугольник
    • Скрывать маркеры вне вьюпорта
  • Документированы внутренние настройки setupMapChildren

[2.0.0-beta.6]

Исправления ошибок

  • Теперь отслеживается лишь изменение в реактивных settings у всех компонентов - не только у YandexMap
  • Исправлен краш с RangeError при использовании кластера в Vue 2

Техническое

  • Переработана сборка Nuxt 3/Bridge
  • Доработана типизация настроек Nuxt 3/Bridge
  • Переработаны импорты на import/export type и включён verbatimModuleSyntax в tsconfig

Документация

  • Добавлены примеры:
    • Добавление метки на карту
    • Перетаскивание объектов
    • Добавление метки с собственным изображением
    • Многоугольник
    • Ломаная

[2.0.0-beta.5]

Новые возможности

  • Добавлена передача coordinates в слот YandexMapClusterer
  • Добавлено изменение zoom для realSettingsLocation

Исправления ошибок

  • Доработан кластеризатор

Документация

  • Добавлена песочница
  • Добавлен пример "Множество точек"

[2.0.0-beta.4]

Исправления ошибок

  • Исправлен запуск в Vue 2, в котором не установлен vue-demi

Документация

Добавлены примеры:

  • Кастомные тайлы на Canvas
  • Собственная карта
  • Изменить размер карты
  • Поместите в скрытый контейнер
  • Ограничить область просмотра карты

[2.0.0-beta.3]

  • В npm добавлены README.md, LICENSE и CHANGELOG.md

[2.0.0-beta.2]

Breaking Changes

  • Из сборки был удален плагин для Babel
  • Из настроек YandexMap убран projection

Новые возможности

  • Поддержана реактивность settings в YandexMap
  • Добавлены настройки YandexMap: readonlySettings и realSettingsLocation
  • Добавлен экспортов локальных типов настроек из компонентов

Документация

  • Добавлен пример "Изменить положение камеры"
  • Добавлен навбар

[2.0.0-beta.1]

Начальный релиз