Задача достаточно распространенная: настроить связь между метками на карте и списком адресов.
Нам потребуется сам список адресов с атрибутами data-objectId, в них мы поместим id метки. Например:
<div data-objectId="1">м. Автово — пр.Стачек, д.75 - за пав."Мастер Кебаб"</div>
<div data-objectId="2">м. Автово2 [до 10 кг] — ул. Маршала Казакова, д.1</div>
<div data-objectId="3">м. Академическая — пр.Науки, д.17 к2, вверх по пандусу</div>
Потребуется карта с метками, подробно как её создать написано тут.
Основная функция включает в себя события, которые произойдут и при клике по метке и при выборе адреса из списка
function viewObject(objectId){
// Удаляем со всего списка класс active затем добавляем к выранному
for (var object of document.querySelectorAll('[data-objectId]')) {
object.classList.remove('active');
}
document.querySelector('[data-objectId="'+objectId+'"]').classList.add('active');
/*
Если подключен jquery можно заменить вверхний цикл этим:
$('[data-objectId]').removeClass('active');
$('[data-objectId='+objectId+']').addClass('active');
*/
// Выделяем все метки в синий
objectManager.objects.each(function (item) {
objectManager.objects.setObjectOptions(item.id, {
preset: 'islands#blueIcon'
});
});
// Выделяем выбранную метку в красный
objectManager.objects.setObjectOptions(objectId, {
preset: 'islands#redDotIcon'
});
// Центруем по метке
myMap.setCenter(objectManager.objects.getById(objectId).geometry.coordinates, 15, {
checkZoomRange: true
});
}
И еще нам придется создать 2 события: при клике на список адресов и при клике по метке.
//Клик по метке в карте
objectManager.objects.events.add('click', function (e) {
var objectId=e.get('objectId');
viewObject(objectId);
});
//Клик в списке
[].forEach.call(document.querySelectorAll('[data-objectId]'), function(el) {
el.addEventListener('click', function() {
var objectId=el.getAttribute("data-objectId");
viewObject(objectId);
});
});
/*
Если подключен jquery можно заменить этим:
$(document).on('click', '[data-objectId]', function(){
var objectId=$(this).attr('data-objectId');
viewObject(objectId);
});
*/