vue-yandex-map
vue-yandex-map copied to clipboard
GeoObject.properties недоступны в Clusterer
Прежде всего спасибо за плагин)
Есть небольшой вопрос, но прежде вступление: хочу сделать возможность задавать произвольные картинки placemark-у и кластеру. Вот в таком стиле

С placemark все довольно понятно: кастомный layout, генерируется по одному на одну метку с "запеченной" картинкой. А вот как задать изображение проекта, попавшего в кластер, в качестве картинки кластера - вопрос. Прежде всего я создал шаблон
export function makeClusterLayout() {
return ymaps.templateLayoutFactory.createClass(
'{% for n, project in properties.geoObjects %}<div class="ymaps__placemark" style="background-image: url({{project.properties.imageThumb}}); background-size: contain;"></div>{% endfor %}'
);
}
Надеясь в последствии брать первый элемент массива объектов и выдавать его изображение за изображение кластера.
Но я столкнулся с тем, что properties меток не существуют, т.е. здесь {{project.properties.imageThumb}} ничего нет
При этом они у меня явно заданы:
<yandex-map-marker
v-for="project in projects"
:key="project.id"
:marker-id="project.id"
:coords="[project.mapArray[0], project.mapArray[1]]"
:properties="iconProperties(project)"
:options="iconOptions(project)"
cluster-name="previewCluster"
></yandex-map-marker>
где iconProperties -
iconProperties(project) {
return {
imageThumb: 'https://via.placeholder.com/200x100',
};
},
*placeholder.com использовал, чтобы убедиться, что данные действительно не существуют
Я перепробовал различные комбинации:
- project.properties.imageThumb
- project.imageThumb
- и т.д... но это уже совсем не то и кажется ошибка именно в том, что properties геообъектов действительно теряется.
Решение:
- Если не включаем ObjectManager: обращаться к property так: geoObject.properties._data.imageThumb
- Если включаем ObjectManager: обращаться к property как обычно: geoObject.properties.imageThumb Наверное, это баг
Привет! Спасибо за отзыв. Обязательно посмотрю, что можно сделать. К сожалению не располагаю достаточным количеством времени, чтоб оперативно реагировать на замечания.