Клуб API Карт

Подсветка области при наведении мышью

azimsky
28 декабря 2009, 19:33

Собственно, имеются области (границы Федеральных округов РФ, кстати, есть координаты с точками, если кому нужны).

При наведении мышью над областью надо её подсвечивать. Делаю так:

//Подсвечивание области при наведении мыши
        YMaps.Events.observe(myPolygon, myPolygon.Events.MouseEnter, function (obj) {
            obj.setStyle(polyActiveStyle);
        });

        // Обработчик события убирания курсора с метки
        YMaps.Events.observe(myPolygon, myPolygon.Events.MouseLeave, function (obj) {
            obj.setStyle(polyStyle);
        });

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

Как сделать так, чтоб работало при наведении мышью внутри Полигона?

Будет ли это работать с коллекцией объектов-полигонов?

Спасибо.

10 комментариев
Подписаться на комментарии к посту
Королев Михаил
29 декабря 2009, 09:04

Так-же жду ответа на вопрос с подсветкой.

я предполагал подобное реализовать при помощи слоя своих тайлов используя всего два файла тайлов - прозрачный и полупрозрачный.

p.s. координаты нужны, давайте все! (для проекта http://ymm.sytes.net )

Событие MouseEnter срабатывает один раз только при попадании курсора в многоугольник (это может быть не обязательно граница). Обрабатывая события MouseEnter и MouseLeave, можно сделать эффект подсветки  мноугоугольника при наведении на него мышкой.

Расскажите подробнее в чем заключается проблема. Быть может дадите ссылку на страничку?
К сожалению, страничка находится на закрытой тестовой площадке.
Скрин экрана Кусочек карты (на картинке видно, что курсор находится НАД полигоном, а ничего не происходит [курсор налепил отдельно, т.к. printscreen не берет его])
Место кода:
var polyStyle = new YMaps.Style();
        polyStyle.polygonStyle = new YMaps.PolygonStyle();
        polyStyle.polygonStyle.fill = false;
        polyStyle.polygonStyle.outline = true;
        polyStyle.polygonStyle.strokeWidth = 1;
        polyStyle.polygonStyle.strokeColor = "0057E199";
        polyStyle.polygonStyle.fillColor = "6FA2FF22";
        
        var polyActiveStyle = new YMaps.Style();
        polyActiveStyle.polygonStyle = new YMaps.PolygonStyle();
        polyActiveStyle.polygonStyle.fill = true;
        polyActiveStyle.polygonStyle.outline = true;
        polyActiveStyle.polygonStyle.strokeWidth = 1;
        polyActiveStyle.polygonStyle.strokeColor = "0057E1dd";
        polyActiveStyle.polygonStyle.fillColor = "6FA2FF22";
        
        var sibirea = new YMaps.Polygon(sibireaArray);
        sibirea.setStyle(polyStyle);
        map.addOverlay(sibirea)
Обработка наведения мыши в первом посте. Опять же, стиль Полигона меняется, только если попасть на его границу.

Координаты границ Федеральных округов РФ не очень точны, но вот, что есть: Координаты границ в массиве

Спасибо
То, что надо! Супер. А что принципиально не так? В чем разница?
Границы, конечно, у меня не очень...

в эксплорере 8, лисе 3.5.5, хроме 4.0.266 цвет полигона меняется при проходе курсора.

а вот в опере 10.10 и 10.50 цвет меняется только при наведении и обратно не восстанавливается. клик тоже не срабатывает.

как лечить?

Это у нас ошибка. Спасибо. Будем фиксить.
Саш, расскажите, как основной файл подцепляет массив из *.js файла
или киньте ссылку
Если вы имеете в виду массив точек с координатами, то он включается как обычный файл со скриптом в странички
<script src="map-districts.js" type="text/javascript">script>
о, спасиб)