Имеется массив с координатами точек, названием и содержимым для балуна, циклом добавляется в коллекцию и выводятся точки на карту. Но встал вопрос с добавлением названия точки в выпадающий список и по клике на списке переходу к координатам точки. Ну та вот, если описывать каждый элемент списка - все работает, но код громоздкий, пробовал записать ListBoxItems из массива - не получается.
Цикл добавления в коллекцию:
for (var i = 0, l = myPoints.length; i < l; i++) {
var point = myPoints[i];
myCollection.add(new ymaps.Placemark(
point.coords, {
balloonContentHeader: point.textIcon,
balloonContent: point.text,
iconContent: point.id,
iconCaption: point.textIcon
}
));
}
Работающее добавление в ListBoxItems:
listBoxItems = [
new ymaps.control.ListBoxItem({
data: {
content: 'Школа 1',
center: [45.060930, 38.964569],
zoom: 14
}
}),
new ymaps.control.ListBoxItem({
data: {
content: 'Школа 2',
center: [45.035470, 38.975313],
zoom: 14
}
})
],
Не работающий цикл добавления в ListBoxItems:
for (var i = 0, l = myPoints.length; i < l; i++) {
var point = myPoints[i];
new ymaps.control.ListBoxItem({
data: {
content: point.id,
center: point.coords,
zoom: 14
}
});
}
Сразу скажу что не особо шарю в программировании.
Я это себе вижу примерно так
ymaps.ready(init);
function init() {
var myMap = new ymaps.Map('map', {
center: [55.76, 37.64],
zoom: 10,
controls: []
}, {
searchControlProvider: 'yandex#search'
});
var listBoxItems = [[60, 30], [61, 30], [62, 30], [63, 30], [64, 30], [65, 30]]
.map(function(coords) {
return new ymaps.control.ListBoxItem({
data: {
content: 'Go to -> ' + coords,
coords: coords
},
options: {
selectOnClick: false
}
})
}),
listBoxControl = new ymaps.control.ListBox({
data: {
content: 'Go to',
title: 'Go to'
},
items: listBoxItems
});
myMap.controls.add(listBoxControl);
listBoxControl.events.add(['click'], function(e) {
var coords = e.get('target').data.get('coords');
if(coords) {
myMap.setCenter(coords);
}
});
}
html, body, #map {
width: 100%; height: 100%; padding: 0; margin: 0;
}
<script type="text/javascript" src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"></script>
<div id="map"></div>
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости