Клуб API Карт

Много меток на карте

Пост в архиве.

Как на карте добавить много меток, чтобы можно было прописать каждой координаты и при нажатии переходить на свою страницу. Пробую добавить новую метку, выдает ошибку... 

var myPlacemark = new ymaps.Placemark([-179.346656799316, 85.04047012975899], {
        // Контент балуна
        balloonContentBody: '<h3>Имя метки</h3>',
        // Произвольные пользовательские данные
        // Кладем сюда урл, на который надо перейти при клике на метку.
        url: 'http://yandex.ru'
    }, {
        preset: 'twirl#buildingsIcon'
    }),
    // Для удобства будем добавлять через промежуточную коллекцию.
    myCollection = new ymaps.GeoObjectCollection();
// Добавим коллекцию на карту.
map.geoObjects.add(myCollection);
// Добавим метку в коллекцию.
myCollection.add(myPlacemark);
// Сразу откроем на метке балун
// myPlacemark.balloon.open();
// Удалить все метки с карты
// myCollection.removeAll();
// При клике на метку, вместо открытия балуна, сразу переходим на другой урл.
myCollection.options.set('hasBalloon', false);
myCollection.events.add('click', function (e) {
    var geoObject = e.get('target');
    window.location.href = geoObject.properties.get('url');
});

 

9 комментариев

сама разобралась...единственное только почему-то сместился центр карты(((

а зачем нужно на каждой метке открывать баллун?

// Сразу откроем на метке балун// myPlacemark.balloon.open();

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

без открытия балуна можно будет пройти по ссылке? почему может центр сместиться?

при открытии балуна меняется и центр карты, чтобы балун был в пределах видимой области карты. 

а без открытия балуна можно будет пройти по ссылке в метке?

скажите пожалуйста, как лучше поступить - много меток поместить в myCollection и перечислить все или по отдельности каждую метку прописывать?

что значит "перечислить все"?

имею в виду как-то так:

// Добавляем метки в коллекцию. myCollection.add(new ymaps.Placemark([37.61, 55.75])); myCollection.add(new ymaps.Placemark([13.38, 52.51])); myCollection.add(new ymaps.Placemark([30.30, 50.27]));