Существует несколько наборов меток, упакованных в отдельные JSON-файлы.
По желанию пользователя необходимо выводить нужный ему набор меток.
Сейчас я реализовал это с помощью ссылок на странице:
<a href="#" onclick="init();">Hey!</a>
<a href="#" onclick="init2();">Hey!</a>
<a href="#" onclick="init3();">Hey!</a>
По клику выполняется следующий код, каждый раз генерируя новую карту и удаляя старую:
function init () {
$("ymaps").remove();
var myMap = new ymaps.Map('map', {
center: [55.76, 37.64],
zoom: 10,
controls: ['zoomControl']
}, {
searchControlProvider: 'yandex#search'
}),
objectManager = new ymaps.ObjectManager({
clusterize: true,
gridSize: 32
});
objectManager.objects.options.set('preset', 'islands#darkGreenCircleDotIcon');
objectManager.clusters.options.set('preset', 'islands#invertedDarkGreenClusterIcons');
myMap.geoObjects.add(objectManager);
$.ajax({
url: "1.json"
}).done(function(data) {
objectManager.add(data);
});
}
Что-то мне подсказывает, что должен существовать более элегантный способ, при котором не надо будет вызывать каждый раз новую карту, а можно просто менять метки на уже существующей.
Я прав или ошибаюсь?
P.S. Решение найдено! Спасибо за советы!ymaps.ready(init);
var myMap;
function init () {
myMap = new ymaps.Map('map', {
center: [55.76, 37.64],
zoom: 11,
controls: ['zoomControl']
}, {
searchControlProvider: 'yandex#search'
}),
objectManager = new ymaps.ObjectManager({
clusterize: true,
gridSize: 32
});
objectManager.objects.options.set('preset', 'islands#darkGreenCircleDotIcon');
objectManager.clusters.options.set('preset', 'islands#invertedDarkGreenClusterIcons');
myMap.geoObjects.add(objectManager);
$.ajax({
url: "1.json"
}).done(function(data) {
objectManager.add(data);
});
}
function newpins () {
if(myMap)
myMap.geoObjects.removeAll();
objectManager = new ymaps.ObjectManager({
clusterize: true,
gridSize: 32
});
objectManager.objects.options.set('preset', 'islands#darkGreenCircleDotIcon');
objectManager.clusters.options.set('preset', 'islands#invertedDarkGreenClusterIcons');
myMap.geoObjects.add(objectManager);
$.ajax({
url: "4.json"
}).done(function(data) {
objectManager.add(data);
});
}