- В документацию добавлено решение частых проблем
- Добавлены компоненты пробок и дорожных событий. Доступ к ним предоставляется по запросу в Яндекс
- Убраны костыли рендера в YandexMapControl
- Добавлена возможность использовать кластеризатор программно для лучшей производительности, передав туда markers и features. Спасибо @nWacky за вклад в библиотеку
- Vite обновлен до v6, также обновлены другие зависимости
- Добавлен компонент
YandexMapRuler
(измерение расстояния на карте), только Vue 3
Список изменений неофициальный и составлен нами на основе сурс кода
- Добавлен класс
YMapContextProvider
. На данный момент не ясно, зачем он нужен, поэтому мы его в компоненты добавлять не стали YMapControl
теперь принимает элемент вторым аргументом. Это отличные новости, на своей стороне потерли костыли- В схему добавлен новый параметр:
clampMapZoom
- В браузерные ивенты вторым аргументом добавлен
mapEvent
- Добавлена возможность обновлять настройки слоев
- В YMapGeolocationControl добавлены
onGeolocateError
иpositionOptions
- Исправлена ошибка, при которой кластеры могли пропадать, когда менялось местоположение маркеров в нём, но не их количество
- Улучшена производительность работы маркеров и кластеров
- Это может вновь вызвать проблемы с пропадающими маркерами - но не должно
- Исправлена ошибка, при которой в слоте кластера не работала реактивность
- Исправлена работа кластеризатора в Vue 2
- Убран костыль с перехватом событий клика на button'ы от Яндекса, в связи с исправлением проблемы на стороне Яндекса
- Исправлена некорректная работа подсчета координат для зума на кластер (метод getBoundsFromCoords) в ряде случаев
- Скорее всего, стало только лучше и более корректно, но в случае возникновения проблем - просьба сообщать
- Исправлена некорректная работа подсчета координат для зума на кластер в ряде случаев. Скорее всего, стало только лучше, но в случае возникновения проблем - просьба сообщать
- Убран костыль с перехватом событий клика на button'ы от Яндекса, в связи с исправлением проблемы на стороне Яндекса
- (бета) Исправлена центровка позиции кластеров
Просьба всем, кто увидит это сообщение, простестировать новую версию на своих девстендах - а может и проде, если все будет супер.
Должно стать лучше, чем было, но, как это обычно бывает, может стать и хуже. Буду признателен обратной связи!
- Исправлена ошибка, при которой Кластеры могли пропадать, при условии, что менялось местоположение маркеров в нём, но не их количество
- Улучшена производительность работы маркеров и кластеров
- Исправлена ошибка, при которой в слоте кластера не работала реактивность
- Вероятно, исправлена работа кластеризатора в Vue 2
- Обновлена версия типов Карт
- Установка конфигурации Карт больше не происходит, если вы её не передали, что незначительно ускорит скорость запуска компонента
- Исправлена ошибка, при которой в редких случаях маркеры пропадали с карты без каких-либо ошибок в консоли
- Исправлена ошибка, при которой в кластеризаторе могли пропадать кластеры
- Обновлены типы Яндекс Карт
- Внедрены улучшения производительности для Vue 3. Теперь будет рендериться меньше элементов. Особенно улучшения будут заметны тем, кто использовал множество полигонов
- Улучшена производительность при обновлении данных и использовании кластеризатора
- Улучшена производительность при отрисовке попапов Default-маркеров
- Добавлен экспорт
vue-yandex-maps/css
для удобного доступа (только для случаев, когда CSS не зарегался автоматически) - Доработано API ранее внутренней функции
createYmapsOptions
, функция добавлена в документацию вместе с гайдом по ручной установке библиотеки
- Исправлена ошибка, при которой маркеры могли крашить карту при задании недостаточно подробного ключа или отложенной отрисовке (например, через v-if)
В данной версии добавлен упущенный функционал ymaps3.suggest
/ymaps3.router
, улучшены старые функции и добавлены новые, исправлено несколько ошибок, а также обновлена версия библиотеки типов Яндекса.
Добавлен новый параметр при инициализации: 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
- YMapDefaultSatelliteLayer был удалён из типизации - а значит может быть в будущем удалён совсем.
- Во избежание Breaking Changes, в библиотеку были добавлены типы
IYandexMapDefaultSatelliteLayer
иIYandexMapDefaultSatelliteLayerProps
, а также предупреждения как на странице примеров, так и в документации этого компонента - Разработчикам более не рекомендуется использовать этот компонент, так как он может быть удалён Яндексом в любой момент
- Во избежание Breaking Changes, в библиотеку были добавлены типы
- Добавлен тип
showScaleInCopyrights
в настройки YandexMap- Соответственно, из нашей библиотеки был удалён костыль типов, добавленный в
2.0.0
- Соответственно, из нашей библиотеки был удалён костыль типов, добавленный в
- Яндекс заменили в своей типизации все одинарные кавычки (
'
) на двойные ("
)!! - Судя по всему, была добавлена функция
setCamera
в модельку YandexMap - Добавлена настройка
transparent
вYMapControl
(делает компонент прозрачным без фона и теней)- В библиотеке для
YandexMapControl
поддержали параметрsettings
(ранее настроек у контрола не было) - Также был обновлён пример "Элементы управления" в документации нашей библиотеки
- В библиотеке для
- В
DefaultFeaturesLayer
иDefaultSchemeLayer
добавлен параметрsource
, а также параметрlayers
вместоlayersInfo
- Вряд вам пригодится эта информация
- Яндекс исправили типы
YMapScaleControl
- Убран костыль с типом этого компонента на стороне нашей библиотеки
- Снижено число ререндеров одних и тех же кластеров при выполнении зума и прочих действий
Это - первый стабильный мажорный релиз 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.
- Добавлен компонент
YandexMapScaleControl
- Незначительно улучшена производительность при изменении настроек
<yandex-map>
- Добавлен забытый Яндексом тип
showScaleInCopyrights
вsettings
<yandex-map>
- Поле
popup.content
уDefaultMarker
больше не является обязательным в типизации - Устранены ложнопозитивные ошибки типизации у всех
v-model
- Переработано множество старых примеров и добавлено множество новых
- Добавлена отдельная страница со списком примеров
- Обновлена ссылка на список изменений - теперь она ведёт на релизы
- Раздел "О проекте" убран из хедера и приведён в релизное состояние
- Добавлен дисклеймер об обновлении на версию
2.x
- Добавлена информация об установке в Astro
- Добавлен раздел документации с API
ymaps3
- Из сборки удалён CHANGELOG.md. Всё равно его в ней никто не читает, а сборка станет чуть меньше по размеру (и не будет расти с каждым новым релизом)
- Исправлены редкие ошибки с реактивностью вложенных объектов внутри настроек компонентов Яндекса
- Исправлен редкий краш карты, возникавший, если скрыть (unmount'нуть) компонент до того, как загрузится скрипт Яндекса
- Наиболее ошибка могла быть заметна на медленном интернете
- Исправлена ошибка, при которой
cursor-grab
мог потенциально привести к крашу страницы, если инициализация карты не была завершена - Теперь
cursor-grab
будет проверять ещё и на то, нажата ли кнопка мыши пользователя (:focus, :active), а не только перемещается ли карта
Эта версия является предфинальной. Что осталось до релиза:
- Внедрить новые примеры от Яндекса
- Возможно, реализовать фичу с порядком координат (#200)
- Протестировать библиотеку на одном крупном проекте внутри моей компании (там много полигонов)
Вполне вероятно, следующая версия будет уже 2.0.0
.
- 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"
При установке этой версии настоятельно рекомендуется обновиться до последней версии Vue, чтобы обеспечить совместимость типизации.
Наиболее в этой сборке был задет кластер, поэтому его проверяйте после обновления особенно внимательно.
- Теперь кластеризатор поддерживает маркеры с одинаковыми координатами
- Теперь для всех маркеров кластеризатора, если у них нет
id
, ему будет автоматически задан случайно сгенерированныйid
- Событие
updatedBounds
больше не возвращается, если деактивированzoomOnClusterClick
- В карту добавлена настройка
cursorGrab
- Статичный CSS карты перемещён в отдельный файл CSS (ранее был в style DOM'а). Это должно упростить работу, если вам потребуется их перезаписать
Переписан алгоритм зума для zoomOnClusterClick
. Теперь больше не вычитается случайное расстояние, вместо этого zoom карты корректируется на целочисленное значение.
Дело в том, что на целых значениях zoom
Яндекс не скрывает маркеры при их приближении к углам карты, а на остальных может скрыть. Почему это происходит в принципе - вопрос хороший.
Также добавлены параметры strategy
, где можно включить старое поведение значением свойства boundsCorrect
, а также параметр disableMinimalZoomCorrectDiff
.
Функционал экспериментальный и может вызывать проблемы. Для этих целей и была оставлена возможность вернуться на старое поведение. Сообщайте, если что-то пойдёт не так.
Выдернут из скомпилированных исходников Яндекса тяжелым трудом и потом. Принимает на вход bounds
и инстанс карты, возвращает zoom
и center
. zoom
идеально соответствует тому, как считает Яндекс, координаты почему-то незначительно отличаются (возможно, я где-то ошибся).
По сути, портирована утилита requireCenterAndZoom
из Карт 2.0.
- Исправлена редкая ошибка, при которой кластеризатор крашился, если вы резко убирали из него маркер или меняли настройка кластера. Теперь эта ошибка стала предупреждением в консоли, а кластер справится, если ему будет чего-то не хватать, отдав Яндексу пустой маркер.
- Исправлена ошибка, при которой карта могла крашнуться, если создать и почти сразу уничтожить какой-либо элемент внутри неё
- Переработан текст на главной странице
- Добавлена секция API
И всех с прошедшим новым годом! :)
- Минимальная версия
@yandex/ymaps3-types
установлена на0.0.20
- Добавлена возможность изменять время, которое библиотека ожидает для загрузки Яндекс.Карт и для отрисовки компонентов. Также добавлена возможность полностью отключить это поведение (ждать вечно). См. #147
- Незначительно улучшена производительность запуска Карт
- Исправлена работа tilt-а камеры в примере "Изменение позиции камеры"
- Улучшена человекочитабельность документации хинта
- В документацию кластеризатора добавлен параметр maxZoom
- Из зависимостей удалён
@nuxt/kit
- он по идее и так есть у всех, кто использует Nuxt 3, незачем его ставить остальным - Улучшены возможности по установке breaking-версий
@yandex/ymaps3-types
: теперь можно установить любую версию до 1.x (если Яндекс до неё дойдёт)
Добавлена совместимость с @yandex/[email protected]
- Из
YandexMapControl
убранsettings
- В
YandexMap
добавлена поддержка тёмной темыtheme
в DefaultSchemeLayer Яндекс призналdeprecated
- используйтеtheme
вYandexMap
- В кластер добавлен параметр
maxZoom
- Добавлен компонент
YandexMapDefaultSatelliteLayer
для спутникового слоя
- Исправлена ошибка, при которой карта могла крашнуться при использовании
real-settings-location
- Минимальная версия Vue поднята до 3.3
- Исправлена работа нового зума кластера для объектов, расположенных рядом
- В Vue 3 был добавлен autocomplete слотов и их содержимого
- Добавлен компонент
YandexMapEntity
- Немного улучшена скорость запуска карты
- Снижена вероятность краша карты при медленном интернете
Добавлен новый параметр: zoomOnClusterClick
! Как следует из названия, при клике на кластер произойдёт автоматический
зум.
Из-за поведения Яндекса в зум встроена логика, высчитывающая область таким образом, чтобы маркеры в неё точно пропали, добавляя отступы для области на основе максимального расстояния между углами области.
По сути, пропс возвращает старое поведение кластеров при клике на них, но со своей реализацией. При нахождении багов или недочетов в логике - создавайте ишью!
Пропс принимает boolean
или объект с параметрами duration
(по умолчанию: 500) и easing
.
И, даже если пропс не указан, при клике на кластер компонент теперь возвращает события trueBounds
и updatedBounds
(
точные и скорректированные координаты области), чтобы упростить свою реализацию этого функционала.
20231210-1331-44.6045347.mp4
- Вариации
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 (Документация)
В YandexMapMarker
добавлен параметр position
(вне settings
). Разработчик может использовать
значение top left-center
, чтобы сделать поведение как в Картах 2.0.
Подробная документация по доступным значениям (для чего это свойство нужно) доступна в документации компонентов ( Компоненты -> Основные -> YandexMapMarker).
- Добавлен и экспортирован тип
YandexMapMarkerPosition
- Исправлен запуск в Vue 2
При работе на реальном проекте столкнулись с тем, что Яндекс очень скупо объяснял, что пошло не так, если вы не указали
обязательный параметр в 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
Версия перешла в состояние Release Candidate! Это значит, что библиотека:
- Полностью документирована, кроме Migration Guide
- Готова к тестированию на продуктиве
- Принимает тикеты с багами и пожеланиями
- Крупных breaking-изменений вноситься не будет
Просим принять максимальное участие в тестировании. Переход библиотеки в тэг latest планируется в январе-феврале.
- Добавлен базовый Migration Guide
- Раздел "О проекте" дополнен информацией о планируемых сроках перехода библиотеки в стабильность и отличиях от прошлых версий
С этим релизом версия 2.0 подошла к статусу Release Candidate.
Библиотека стабильна, полностью документирована (кроме гайда миграции) и готова к работе и тестированию сообществом.
- В кластер добавлен параметр
clusterMarkerProps
для изменения параметров маркера слота кластера. - Добавлен и экспортирован тип
YandexMapListenerSettings
- Добавлен раздел "Список компонентов"
- Документированы все компоненты 🎉
- Теперь структура в 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>
- Исправлена работа реактивности циферок кластеров
- Исправлен случайный фатальный краш при отрисовке кластеров
- Исправлена ошибка, при которой библиотека иногда могла не работать в Nuxt 3
- Завершена работа над секцией "Примеры". Добавлены последние примеры: Элементы управления и Хинты.
В этой сборке были внедрены улучшения производительности. Что-то могло сломаться, в частности - реактивность.
- Параметр слота
clustererObject
переименован вclusterer
- ЗНАЧИТЕЛЬНО улучшена производительность. Убраны костыли, поддержано кэширование Яндекса
- Исправлена ошибка, при которой содержимое попапа
YandexMapDefaultMarker
могло закрыться без действия пользователя, когда содержимое попапа было передано через слот#popup
- Исправлена ошибка, при которой всегда триггерилось обновление
settings
компонента, если в нём была функция, даже если она не менялась - Исправлена ошибка, при которой default marker любил закрываться при клике куда угодно, кроме него
- Внедрено поведение, при котором изменение объекта первого уровня в
settings
приведет к полной передаче этого объекта в Яндекс.
Это сделано во избежание ситуаций, когда Яндекс требует полный набор данных, а передастся лишь кусок.
Вы могли это заметить при измененииlocation.center
- если изменился только один элемент массива, Яндексу передавался только он, хотя требовался полный массив
- Экспортирован тип
YandexMapDefaultMarkerSettings
с настройками маркера - Тип
VueYandexMapClustererOptions
переименован вYandexMapClustererOptions
- Из типизации удалены
vuefy
иreactify
- их подключение бесполезно в данной библиотеке, кроме того, Яндекс сломалиOverload
нашей библиотеки бесконечной рекурсией, добавивvuefy
- Из
dependencies
удалёнrollup-plugin-copy
, попавший туда по ошибке - Пакет обновлён до Vite 5
- Добавлены примеры:
- Попапы
- Прямоугольник
- Скрывать маркеры вне вьюпорта
- Документированы внутренние настройки
setupMapChildren
- Теперь отслеживается лишь изменение в реактивных settings у всех компонентов - не только у
YandexMap
- Исправлен краш с RangeError при использовании кластера в Vue 2
- Переработана сборка Nuxt 3/Bridge
- Доработана типизация настроек Nuxt 3/Bridge
- Переработаны импорты на
import/export type
и включёнverbatimModuleSyntax
вtsconfig
- Добавлены примеры:
- Добавление метки на карту
- Перетаскивание объектов
- Добавление метки с собственным изображением
- Многоугольник
- Ломаная
- Добавлена передача
coordinates
в слотYandexMapClusterer
- Добавлено изменение
zoom
дляrealSettingsLocation
- Доработан кластеризатор
- Добавлена песочница
- Добавлен пример "Множество точек"
- Исправлен запуск в Vue 2, в котором не установлен
vue-demi
Добавлены примеры:
- Кастомные тайлы на Canvas
- Собственная карта
- Изменить размер карты
- Поместите в скрытый контейнер
- Ограничить область просмотра карты
- В npm добавлены README.md, LICENSE и CHANGELOG.md
- Из сборки был удален плагин для Babel
- Из настроек
YandexMap
убранprojection
- Поддержана реактивность
settings
вYandexMap
- Добавлены настройки
YandexMap
:readonlySettings
иrealSettingsLocation
- Добавлен экспортов локальных типов настроек из компонентов
- Добавлен пример "Изменить положение камеры"
- Добавлен навбар
Начальный релиз