Метки на карту добавлены через Placemarks:
ymaps.ready(init);
var myMap,
myPlacemark;
function init(){
var myMap = new ymaps.Map("map", {
center: [56.995401,40.985204],
zoom: 13
}, {
searchControlProvider: 'yandex#search'
});
clusterer = new ymaps.Clusterer({
preset: 'islands#icon',
groupByCoordinates: false,
clusterDisableClickZoom: false,
clusterHideIconOnBalloonOpen: false,
geoObjectHideIconOnBalloonOpen: false
}),
geoObjects = [];
// далее циклом добавляются placemark'и
// -------->>>>>>>
var placemark = new ymaps.Placemark([коорд1, коорд2], {
balloonContentHeader: 'Заголовок 1',
balloonContent: 'Содержимое балуна 1',
iconContent: 'Содержимое иконки 1'
}, {
preset: 'islands#greenStretchyIcon'
});
placemarks.push(placemark);
// <<<<------------
// вышли из цикла
clusterer.add(placemarks);
myMap.geoObjects.add(clusterer);
Как из внешнего подключаемого скрипта можно найти нужную мне метку по тексту из балуна (balloonContent) и изменить ее цвет (preset), а также сам текст балуна?
Пробовал так:
// .hand - некий объект за пределами карты, по которому щелкаем мышкой
$('.hand').click(function() {
var shownObjects;
var myObjects = ymaps.geoQuery(myMap.geoObjects);
console.log(myMap.geoObjects.getLength()); // здесь показывает 1
console.log(myObjects.getLength()); // !!!!!!!!!!!!!!!!!!!!!!! А здесь сразу рисует 0 !!!!!!! Почему?
var byAddress = new ymaps.GeoQueryResult();
myObjects.then(function() {
byAddress = myObjects.search('properties.balloonContent = "Искомый текст балуна"');
byAddress.setOptions('preset', 'twirl#blueIcon');
shownObjects = byAddress.addToMap(myMap).applyBoundsToMap(myMap);
});
});
но ничего интересного не получается.