Клуб API Карт

Как указать шаблон для hint (хинт)?

boicoff
22 августа 2010, 19:08
Как указать шаблон для хинта, не для плейсмарка, а т.с. глобально?
11 комментариев
Подписаться на комментарии к посту
Если hint в Вашем контексте это YMaps.Hint,
то есть методы YMaps.HintContentStyle и YMaps.HintStyle
Я в курсе.

Хотелось бы конкретный пример. В примерах есть только изменение хинта для плейсмарка
Можно изменить шаблон по умолчанию для всплывающей подсказки.

YMaps.Templates.add("default#hintContent", new YMaps.Template('

$[name]

'));

Внимание. Будьте осторожны при смене шаблонов и стилей по умолчанию.

Соответственно применить можно вот так:

var placemark = new YMaps.Placemark(map.getCenter(), { hasHint : true });
placemark.name = "Hint content";
map.addOverlay(placemark);
Чего-то не срабатывает. Показываю хинт при наведении на полилинию:
 

                    YMaps.Events.observe(item, item.Events.MouseMove, function (it, Event) {
                       map.hint.show(map.converter.coordinatesToLocalPixels(Event.getGeoPoint()), it.name, {showTimeout: 0});
                    }); 

А почему вы не хотите в стиле ломанной указать hasHint = true?

Дайте ссылку на страницу, пожалуйста. Я тогда смогу подсказать в чем дело. Можно просто листинг кода привести в комментарии.
Я ломаную загружаю через KML-файл.

 

KML = new YMaps.KML(URL+'kml/'+KMLfile);
            
            YMaps.Events.observe(KML, KML.Events.Load, function (kml) {
            
                kml.get(0).forEach(function (item) {

                    item.openBalloon();
                    
                    var gcBounds = new YMaps.GeoCollectionBounds(item.getPoints());


                    var LeftBottom = map.converter.localPixelsToCoordinates(new YMaps.Point(  map.converter.coordinatesToMapPixels(gcBounds.getLeftBottom()).getX()+50, map.converter.coordinatesToMapPixels(gcBounds.getLeftBottom()).getY()+50 ));
            
                var RightTop = map.converter.localPixelsToCoordinates(new YMaps.Point(  map.converter.coordinatesToMapPixels(gcBounds.getRightTop()).getX()-50, map.converter.coordinatesToMapPixels(gcBounds.getRightTop()).getY()-50 ));
            

                map.setBounds(new YMaps.GeoBounds(LeftBottom ,RightTop ));                    
                    
                    
                    YMaps.Events.observe(item, item.Events.MouseEnter, function (it, Event) {  
                       map.hint.show(map.converter.coordinatesToLocalPixels(Event.getGeoPoint()), it.name, {showTimeout: 0});
                    }); 
                    
                    YMaps.Events.observe(item, item.Events.MouseMove, function (it, Event) {
                       map.hint.show(map.converter.coordinatesToLocalPixels(Event.getGeoPoint()), it.name, {showTimeout: 0});
                    }); 
                    
                    YMaps.Events.observe(item, item.Events.MouseLeave, function (it, Event) {
                        map.hint.hide();
                    });                                         
                    
                });   
    
                      
           })            
            
            
            map.addOverlay(KML);

Чтобы показалась всплывающая подсказка, нужно чтобы было указано что-то в поле name.
Вы можете указать статичный текст в шаблоне всплывающей подсказке, тогда она будет отображаться.

YMaps.Templates.add("default#hintContent", new YMaps.Template('

Hint Template

'));

В случае с KML вы можете поступить следующим образом:



var KML = new YMaps.KML(URL+'kml/'+KMLfile);
KML.setStyle({ hasHint : true });

map.addOverlay(KML);

Не работает.Та и проблема-то не в показе, а в том, что шаблон не знаю как указать.  :-(
Так я же написал в комментариях выше как указать шаблон.
Дайте ссылку на вашу страничку.
У меня это всё на локалхосте.
Можете отослать мне ее на почту? (почта указана у меня в профиле). Я посмотрю в чем дело.