PP.AreaVisual(settings);
settings. JSON-объект со значениями свойств класса.
Конструктор AreaVisual создает экземпляр класса AreaVisual.
Для выполнения примера необходимо наличие на html-странице компонента MapChart с наименованием «map» (см. «Пример создания компонента MapChart»). Также должна быть загружена карта типа «WebGL», для этого нужно выполнить следующую строку сценария:
changeMapType("WebGL");
Создадим и установим новый объект для работы с настройками сопоставления данных для территориального показателя:
// Возвращает слой с областями карты function getWorkLayer() { return map.getLayer("Regions"); } // Возвращает базовый класс территориального показателя карты function getAreaVisual() { return getWorkLayer().getVisual(); } // Выводит информацию о территориальном показателе function printAreaVisualInfo(areaVisual) { console.log("Идентификатор источника для первого сопоставления данных: %s", areaVisual.getFirstDataSource().getId()); } // Возвращает цвет function getColorForValue(areaVisual, value) { // Получаем шкалу для сопоставления данных цветам заливки областей слоя карты var scale = areaVisual.getColorMapping().getScale(); var minIndex, maxIndex; var minValue, maxValue; for (var i = 0; i < scale.getValues().length; i++) { if (scale.getValues()[i] <= value) { minValue = scale.getValues()[i]; minIndex = i; } else { maxValue = scale.getValues()[i]; maxIndex = i; break; } if (i == scale.getValues().length - 1) { maxValue = scale.getValues()[i]; maxIndex = i; } } var color = scale.between(minIndex, maxIndex, value / (maxValue - minValue)); return color; } // Возвращает источник данных function getDataSource() { return map.getDataSources().DataSource0; } /* Создаёт объект для работы с настройками сопоставления данных для территориального показателя */ function createAreaVisual() { var areaVisual = new PP.AreaVisual({ ColorMapping: getColorMapping(), HeightMapping: getHeightMapping() }); return areaVisual; } // Создаёт настройки сопоставления данных цвету заливки областей слоя карты function getColorMapping() { var colorMappings = new PP.DataMapping({ DataSource: getDataSource(), Type: PP.DataMappingType.Scale, DimAttributeId: "areaColor0", Id: "areaColor0", // Определяем шкалу Scale: new PP.ScaleBase({ Items: "#FF705B #FF9191 #C3D66C #6BBC80 #82BAB6 Transparent", NoData: "Gray", TypeArguments: "Brush", Id: "MapScale0", Values: "0 30 70 100" }) }) return colorMappings; } // Создаёт настройки сопоставления данных высоте областей слоя карты function getHeightMapping() { var colorMappings = new PP.DataMapping({ DataSource: getDataSource(), Type: PP.DataMappingType.Scale, DimAttributeId: "areaHeight0", Id: "areaHeight0", // Определяем шкалу Scale: new PP.ScaleBase({ Items: "11 23 57 69 85", NoData: "5", TypeArguments: "Double", Id: "scale0", Values: "15 40 60 75", ResultMode: PP.ScaleResultMode.IntervalsWithEquality }) }) return colorMappings; } // Обновляем легенду function updateLegend(visualId) { var visual = map.getVisualById(visualId); var legend = map.getLegendByDataMapping(visual ? visual.getColorMapping() : null); legend.setScale(visual.getColorMapping().getScale()); var freeArea = new PP.Rect({ Left: 0, Top: 0, Width: 800, Height: 460 }); // Перерисовываем легенду legend.draw(freeArea, getWorkLayer().getDomNode()); } /* Устанавливаем объект для работы с настройками сопоставления данных для территориального показателя */ var areaVisual = createAreaVisual(); getWorkLayer().setVisual(areaVisual); var visualId = "CustomAreaVisual"; map.addVisual(areaVisual, visualId); // Перерисовываем карту map.draw(); // Обновляем легенду updateLegend(visualId); // Выводим информацию о территориальном показателе printAreaVisualInfo(areaVisual); // Определяем цвет заливки области слоя карты со значением 15 var value = 15; var brush = getColorForValue(areaVisual, value); if (brush) { console.log("Цвет заливки для области слоя карты со значением %s: %s", 15, brush.getColor()); } else { console.log("Цвет для области слоя карты со значением %s не определён", value); }
В результате выполнения примера были установлены новые настройки сопоставления данных для территориального показателя. В связи с этим элементы легенды карты были окрашены в другие цвета, а также была изменена высота областей слоя карты:
В консоли браузера были выведены идентификатор источника для первого сопоставления данных территориального показателя и цвет заливки для области слоя карты со значением 15:
Идентификатор источника для первого сопоставления данных: DataSource0
Цвет заливки для области слоя карты со значением 15: #FF8076
См. также: