Клуб API Карт

Как из внешнего скрипта изменить цвет метки, текст балуна и т.п.?

smart282
29 ноября 2015, 19:45

Метки на карту добавлены через 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);
   });
});

 но ничего интересного не получается.

2 комментария
Подписаться на комментарии к посту

ymaps.geoQuery(clusterer.getGeoObjects()).search(...)

Спасибо! Все заработало!