Клуб API Карт

Собственные иконки в GeoObjectCollection

snovid
20 января 2009, 12:52

Никак не могу заставить отображаться собственные иконки для Геоточек.

Пример можно посмотреть здесь 

Код вот:

        map = new YMaps.Map(document.getElementById("YMapsID"));
        moscow_center = new YMaps.GeoPoint(37.64, 55.76);
        map.setCenter(moscow_center, 12);
        map.addControl(new YMaps.Zoom());
       

Создаю стиль для своих иконок


        var s = new YMaps.Style();
        s.iconStyle = new YMaps.IconStyle();
        s.iconStyle.offset = new YMaps.Point(-22, -30);
        s.iconStyle.href = "images/shop_metka.png";
        s.iconStyle.size = new YMaps.Point(24, 30);
        YMaps.Styles.add("example#customPoint", s);
  

Создаю Геоколлекцию с назначенным стилем.


        gCollection = new YMaps.GeoObjectCollection("example#customPoint");       
        bounds = new YMaps.GeoCollectionBounds(moscow_center);     

  
 ShowPoints('Олимпийская деревня','Торговый Центр "Люкс"');
 ShowPoints('Кутузовский проспект, 17','АРБАТ ПРЕСТИЖ');
 ShowPoints('Ленинский проспект, 34/1','АРБАТ ПРЕСТИЖ');
 ShowPoints('ул.Петровка, 2','ЦУМ');
       
            map.addOverlay(gCollection);   
               
        }
       
       function ShowPoints(my_Address, my_Shop){
            var geocoder = new YMaps.Geocoder(my_Address, {results: 1,hideIcon:false});
               
                YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
                    if (this.length()) {
                       var geoResult = this.get(0);
                       geoResult.setBalloonContent(my_Shop);   
                       YMaps.Events.observe(geoResult, geoResult.Events.MouseOver, function () {
                               map.openBalloon(geoResult.getGeoPoint(), my_Shop,{hasCloseButton:false});
                            });  
                       bounds.add(geoResult.getGeoPoint());
                       gCollection.add(geocoder);
                       map.setBounds(bounds);
                   }
                });       
            }


Размещаю Геоколлекцию на карте, а стиль не применяется! Где что упустил???

12 комментариев
Подписаться на комментарии к посту
у объекта geocoder определен свой стиль, поэтому стиль от группы не наследуется. Нужно либо сделать geocoder.setStyle(null); либо gCollection.add(geoResult); лучше второе.
Огромное спасибо! Признаюсь, вряд ли бы сам дошел до этого...
Подскажите, какая строчка кода создает эффект возникновения надписи при наведении мыши на метку?
Вот этот кусок: YMaps.Events.observe(geoResult, geoResult.Events.MouseOver, function () { nBalloon(geoResult.getGeoPoint(), 'Текст в Балуне',{hasCloseButton:false}); });
Вот простой код из примера с добавлением этой строки Не работает
А где код-то?
Копировал из Эксплорера, не знаю куда делся http://api.yandex.ru/maps/jsapi/examples/coordinatesmarkers.html
Фрагмента кода опять нет, наверное, нельзя просто скопировать и вставить. Я его брал из этого примера.
А в этом примере и нет этого события: при наведении на точку ничего не происходит.
Как сделать, что бы при наведении курсора возникала надпиь? Если просто добавить, указанную Вами строку тоже ничего не происходит
Дословное ее копирование, конечно, не будет работать. Эту строку нужно использовать применительно к какому-либо объекту placemark. var placemark = new YMaps.Placemark(new YMaps.GeoPoint(37, 55)); map.addOverlay(placemark); YMaps.Events.observe(placemark, placemark.Events.MouseOver, function () { map.openBalloon(placemark, 'надпись',{hasCloseButton:false}); }); Вот здесь, кстати, обсуждается вопрос и с исчезновением надписи http://clubs.ya.ru/4611686018427393745/replies.xml?item_no=1396
Было бы ещё не плохо если бы при уберании мыши с балуна исчезала надпись.