Клуб API Карт

Заголовок не указан

yevgeniymedvedev
5 декабря 2008, 15:13

Здравствуйте, эксперементировал с вашей разработкой.

        myGMarkerOptions = {style : obStyle, hasHint : true,
                hintOptions: {maxWidth : 100, showTimeout : 200},
                 balloonOptions: {maxWidth : 600}
            };
         var placemark = new YMaps.Placemark(point, myGMarkerOptions);
         placemark.setHintContent(title);
         placemark.description = officeDescription;

       
        YMaps.Events.observe(placemark, "MouseOver", function() {
            var obStyle = placemark.getStyle();
            obStyle.iconStyle = new YMaps.IconStyle("example#markerPointIcon");
            placemark.setStyle(obStyle);
        });
        YMaps.Events.observe(placemark, "MouseOut", function() {
            //alert(MouseOut);
            var obStyle = placemark.getStyle();
            obStyle.iconStyle = new YMaps.IconStyle("example#coldmarkerPointIcon");
            placemark.setStyle(obStyle);
        });

Возник вопрос из-за чего не срабатывает событие MouseOut? Помогите пожалуйста это понять.

    function onMouseOut(i) {
        YMaps.Events.notify(collection[i].gmarker, "MouseOut");
    }


двигаясь по списку меток на карте я его кидаю сам, и тогда все нормально, но вот само по себе не срабатывает.

12 комментариев
Подписаться на комментарии к посту
Код, который вы привели - неполный. Можете дать ссылку на страницу, где можно посмотреть, что событие мыши не работает? Я написал простенький пример, демонстрирующий работу с событиями мыши: var placemark = new YMaps.Placemark(new YMaps.GeoPoint(37.64, 55.76)); map.addOverlay(placemark); YMaps.Events.observe(placemark, placemark.Events.MouseOver, function() { alert('MouseOver'); }); YMaps.Events.observe(placemark, placemark.Events.MouseOut, function() { alert('MouseOut'); });
Тут выложил пример мой пример http://www.artions.com/maps/global_locations.php
Действительно, если сменить ноду, то событие MouseOut не сработает. Мы будем разбираться с этой проблемой. Спасибо! В качестве временного решения могу посоветовать менять не полностью шаблон, а только стиль значка метки (см. Руководство разработчика). Если не будет получаться, то пишите - постараюсь помочь.
Спасибо за совет по стилям, в самом деле смысла менять шаблон полностью нет... жаль что относительный путь на картинку не поддерживается, но не беда) в IE 6 продолжили сыпаться некоторые ошибки при наведении на маркер...дебаггер зарывается в вашей YMaps.js.
Дайте ссылку на страницы с минимальным количеством кода, на которой можно наблюдать ошибку.
http://www.artions.com/maps/yandexmaps.php дайте знать когда исправлено по ивенту мыши будет
Попробовал сменить стиль значка (при собитиях MouseOver и MouseOut) методом setStyle() (пример http://www.chln.ru/test/) - если срабатывает через notify, то все нормально, если навести мышь на сам значок, то происходит зацикливание. Похоже из-за автоматического срабатывания метода update() заново генерирующего события MouseOut и MouseOver. Как избежать зацикливания??
а можете дать ссылку на страницу, на которой происходит зацикливание?
Так я ж привел ссылку: http://www.chln.ru/test/ (в посте просто замыкающая скобка захватывается вместе с сылкой, поэтому 404 выходит) Или у вас не наблюдается зацикливания?? Я тестирую в Опере 9.63 и FF 3.05
в IE7, к сожалению, такое же наблюдается (
При смене стиля второй раз происходит событие MouseOver. Измените Ваш код следующим образом: YMaps.Events.observe(placemark, placemark.Events.MouseOver, function(mEvent) { if (mEvent.getStyle() != 'default#orangePoint') { changeBorder(mEvent.id); mEvent.setStyle('default#orangePoint'); } }); YMaps.Events.observe(placemark, placemark.Events.MouseOut, function(mEvent) { if (mEvent.getStyle() == 'default#orangePoint') { changeBorder(mEvent.id); mEvent.setStyle('default#lightbluePoint'); } });
черт возьми, не додумался проверять уже установленный стиль ))