Есть задача, состоящая в том, что нужно, исходя из некоторых условий, раскрасить регионы России в разные цвета. Делаю это следующим образом (для примера цвета всех регионов оставил одинаковыми). В цикле по всем полученным через YMaps.Regions.load данным создаю новый полигон:
var polygon = YMaps.Polygon.fromEncodedPoints(
obj.metaDataProperty.encodedShapes[0].coords,
obj.metaDataProperty.encodedShapes[0].levels,
geoObjectOptions
);
Полный исходный код выглядит так:
var map = new YMaps.Map(document.getElementById("ymap"));
map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 3);
YMaps.Regions.load("ru", function (state, response) {
if (state == YMaps.State.SUCCESS) {
response.forEach(function (obj, objIndex, group) {
obj.setOptions({
highlightRegion: false
});
var geoObjectOptions = {
hasBalloon: true,
hasHint: true,
hintOptions: {
offset: new YMaps.Point(5, 5)
}
}
var style = new YMaps.Style();
style.polygonStyle = new YMaps.PolygonStyle();
style.polygonStyle.fill = true;
style.polygonStyle.outline = true;
style.polygonStyle.strokeWidth = 3;
style.polygonStyle.strokeColor = "ffffff88";
style.polygonStyle.fillColor = "ff000055";
var polygon = YMaps.Polygon.fromEncodedPoints(
obj.metaDataProperty.encodedShapes[0].coords,
obj.metaDataProperty.encodedShapes[0].levels,
geoObjectOptions
);
polygon.name = obj.name + ' (' + objIndex + ')';
polygon.description = 'tratata ' + obj.name;
polygon.setStyle(style);
map.addOverlay(polygon);
}
response.setStyle({
polygonStyle : {
fillColor : "ffffff99",
strokeColor : "000000",
strokeWidth: 3
},
hasHint : false
});
} else {
alert("Во время выполнения запроса произошла ошибка: " + response.error.message)
}
);
В итоге вся карта России заливается полигонами нужных цветов (в количестве 82 штук) и карта начинает заметно подтормаживать, особенно в IE. Возможно я делаю что-то неправильно и есть способ разукрасить карту потребляя меньше ресурсов системы посетителя?