Что-то я не там такого не наблюдал. То что по активным областям можно тыкать это понятно, но как реализовать подсветку объектов (которые собственно и являются активными областями) на карте при наведении? Задача состоит в следующем. Имеется большое количество (скажем 100к) активных областей распределнных по значительной территории. Все это успешно бьется на тайлы с описанием этих областей. Подсказка при наведении так же успешно всплывает, но необходимо сделать подсветку вместо подсказки. Интересуют ссылки на документацию и примеры кода.
при наведении на активную область на карту просто добавляется полигон с моделью интерактивности 'default#transparent'. Соответственно при уходе курсора с области этот полигон надо удалять.
Если посмотреть на описание хотспотов, можно найти поле geometry. Мы закладывали его как раз для таких случаев. Если в это поле вы передадите геокоординаты полигона, код будет примерно таким.
var currentPolygon = null;
hotspotLayer.events.add('mouseenter', function (e) {
var activeShape = e.get('activeShape');
currentPolygon = new ymaps.Polygon(activeShape.getGeometry(), null, {interactivityModel: 'default#transparent'});
map.geoObjects.add(currentPolygon);
});
hotspotLayer.events.add('mouseleave, function (e) {
Вы ранее написали, что у вас уже получилось создать хотспотный слой, на котором выводятся подсказки. Вот тут подразумевалось, что с этим же слоем вы и будете работать дальше.
там сделано на Api 1.0 - как то же самое сделать на api 2 ?
var ml = new YMaps.YMapsML("http://www.2kom.ru/map/-regions.xml"); map.addOverlay(ml); YMaps.Events.observe(ml, ml.Events.Load, function () { var obj = this.filter(function (obj) { return typeof(obj.Events.MouseEnter) == 'string' }); var oldStyle, newStyle; for(var i in obj) { YMaps.Events.observe(obj[i], obj[i].Events.MouseEnter, function(o){ o.setStyle("http://www.2kom.ru/map/-regions.xml#hoverStyle"); map.hint.show(map.converter.coordinatesToLocalPixels(map.getCenter()), o.name); });
а в XML - <repr:Style gml:id="hoverStyle"> <repr:polygonStyle> <repr:strokeColor>FFFFFFFFrepr:strokeColor> <repr:strokeWidth>1repr:strokeWidth> <repr:outline>1repr:outline> <repr:fill>1repr:fill> <repr:fillColor>FC910633repr:fillColor> repr:polygonStyle> <repr:balloonContentStyle> <repr:template>#customTemplaterepr:template> repr:balloonContentStyle> repr:Style>