Visual: PP.AreaVisual;
Свойство Visual определяет настройки сопоставления данных области слоя карты.
Значение свойства устанавливается из JSON и с помощью метода setVisual, а возвращается с помощью метода getVisual.
Для выполнения примера необходимо наличие на html-странице компонента MapChart с наименованием «map» (см. «Пример создания компонента MapChart»). Применим новые настройки для области слоя карты с идентификатором «RU-KYA» и отобразим всплывающую подсказку для неё:
// Возвращает слой с областями карты
function getWorkLayer() {
return map.getLayer("Regions");
}
// Возвращает базовый класс территориального показателя карты
function getAreaVisual() {
return getWorkLayer().getVisual();
}
// Возвращает источник данных
function getDataSource() {
return map.getDataSources().DataSource0;
}
/* Создаёт объект для работы с настройками
сопоставления данных для территориального показателя */
function createAreaVisual() {
var areaVisual = {
ColorMapping: getColorMapping(),
HeightMapping: getAreaVisual().getHeightMapping(),
Id: "MapAreaVisual"
};
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 createToolTip() {
var toolTip = new PP.Ui.ChartTooltipBase({
HoverMode: PP.HoverMode.Click,
MaskText: {
IsAuto: true,
Value: "{%Name}"
}
});
return toolTip;
}
// Создаёт пузырьковый показатель
function createMapShape() {
var mapShape = getWorkLayer().getShape("RU-KYA");
mapShape.setVisual(createAreaVisual());
mapShape.setValue("Красноярск");
mapShape.setToolTip(createToolTip());
var domNode = mapShape.getDomNode();
domNode.setAttribute("stroke", PP.Color.Colors.yellow);
mapShape.setDomNode(domNode);
return mapShape;
}
// Отрисовывает расшифровку территорий карты
function drawMapShape(mapShape) {
if (mapShape.getDomNode() == null) {
mapShape.draw();
}
var shapes = getWorkLayer().getShapes();
shapes[mapShape.getId()] = mapShape;
// Обновляем карту
map.refresh();
}
// Отрисовывает всплывающую подсказку
function drawToolTip(mapShape) {
// Определяем цвет заливки всплывающей подсказки
var toolTipColor = mapShape.getToolTipColor();
mapShape.getToolTip().setBackground(new PP.SolidColorBrush({
Color: toolTipColor,
Opacity: 0.5
}));
mapShape.getToolTip().setFont(new PP.Font());
// Отображаем всплывающую подсказку
mapShape.toggleTooltip(mapShape.getCenter().getX(), mapShape.getCenter().getY());
}
// Выводит информацию о слое области карты
function printShapeInfo(mapShape) {
if (mapShape.getIsRendered()) {
console.log("Область слоя карты «%s» успешно отрисована", mapShape.getId());
}
console.log("Текущий цвет заливки области слоя карты «%s»: %s", mapShape.getId(), mapShape.getCurrentBrush().getColor());
if (mapShape.getIsSettingsCreated()) {
console.log("Область слоя карты была создана на основе настроек пользователя");
} else {
console.log("Область слоя карты была создана на основе настроек, полученных при разборе топоосновы");
}
console.log("Область слоя карты «%s» %sпрозрачна", mapShape.getId(), (mapShape.isOpaque() ? "не " : ""));
}
// Выводит информацию, отображаемую в всплывающей подсказке
function printToolTipInfo(mapShape) {
console.log("Всплывающая подсказка отображена для области слоя карты «%s»", mapShape.getToolTipValues().Name);
}
// Получаем область слоя карты
var mapShape = createMapShape();
// Отрисовываем данную область
drawMapShape(mapShape);
// Отображаем всплывающую подсказку
drawToolTip(mapShape);
// Выводим информацию о слое области карты
printShapeInfo(mapShape);
// Выводим информацию, отображаемую в всплывающей подсказке
printToolTipInfo(mapShape);
В результате выполнения примера для области слоя карты с идентификатором «RU-KYA» были установлены новые настройки сопоставления данных, задано значение «Красноярск», граница области окрашена в жёлтый цвет, отображена всплывающая подсказка:

В консоли браузера была выведена информация об области слоя карты с идентификатором «RU-KYA» и всплывающей подсказке:
Область слоя карты «RU-KYA» успешно отрисована
Текущий цвет заливки области слоя карты «RU-KYA»: #FF9191
Область слоя карты была создана на основе настроек, полученных при разборе топоосновы
Область слоя карты «RU-KYA» не прозрачна
Всплывающая подсказка отображена для области слоя карты «Красноярск»
См. также: