addSubLayer(layer: PP.MapLayer, id: String);
layer. Добавляемый дочерний слой;
id. Идентификатор добавляемого слоя.
Метод addSubLayer добавляет дочерний слой.
Для выполнения примера необходимо наличие на html-странице компонента MapChart с наименованием «map» (см. «Пример создания компонента MapChart»). Добавим для слоя с идентификатором «Regions» дочерний слой «Visuals», в котором разместим столбиковый, круговой и пузырьковый показатели. Отобразим также значок и всплывающую подсказку для области слоя карты «RU-KYA». Родительский слой скроем:
// Создаёт всплывающую подсказку для слоя карты function createToolTip() { var toolTip = new PP.Ui.ChartTooltipBase({ HoverMode: PP.HoverMode.Click, MaskText: { IsAuto: true, Value: "Слой «Visuals»" } }); toolTip.setFont(new PP.Font()); return toolTip; } // Отрисовывает всплывающую подсказку function drawToolTip(shapeId) { var shape = getWorkLayer().getShape(shapeId); shape.setToolTip(getWorkLayer().getToolTip()); var point = shape.getCenter(); shape.toggleTooltip(point.getX(), point.getY()); } // Создаёт слой карты function createLayer(layerId) { var parentLayer = getParentLayer(); // Создаём слой с показателями карты var visualsLayer = new PP.MapLayer({ Chart: map, DomNode: parentLayer.getDomNode(), VisualsOffset: 35, Id: layerId, IsVisible: false, // Скрытый слой ParentLayer: parentLayer, Shapes: parentLayer.getShapes(), Visual: parentLayer.getVisual() }); // Устанавливаем всплывающую подсказку visualsLayer.setToolTip(createToolTip()); visualsLayer.setMilestones(getMilestones()); visualsLayer._MapBarCollection = getMapBarCollection(); visualsLayer._MapPieCollection = getMapPieCollection(); visualsLayer._MapBubbleCollection = getMapBubbleCollection(); visualsLayer.setVisual(parentLayer.getVisual()); parentLayer.addSubLayer(visualsLayer, layerId); visualsLayer.draw(); // Отображаем дочерний слой карты if (!visualsLayer.getIsLayersVisible()) { visualsLayer.show(); } return visualsLayer; } // Возвращает коллекцию значков function getMilestones() { var milestones = {}; for (var i in getParentLayer().getMilestones()) { milestones[i] = getParentLayer().getMilestones()[i]; delete getParentLayer().getMilestones()[i]; } return milestones; } // Возвращает коллекцию столбиковых показателей function getMapBarCollection() { var barCollection = []; for (var i in getParentLayer().getMapBarCollection()) { var bar = getParentLayer().getMapBarCollection()[i]; barCollection.push(bar); } getParentLayer().getMapBarCollection().length = 0; return barCollection; } // Возвращает коллекцию круговых показателей function getMapPieCollection() { var pieCollection = []; for (var i in getParentLayer().getMapPieCollection()) { var bar = getParentLayer().getMapPieCollection()[i]; pieCollection.push(bar); } getParentLayer().getMapPieCollection().length = 0; return pieCollection; } // Возвращает коллекцию пузырьковых показателей function getMapBubbleCollection() { var bubbleCollection = []; for (var i in getParentLayer().getMapBubbleCollection()) { var bar = getParentLayer().getMapBubbleCollection()[i]; bubbleCollection.push(bar); } getParentLayer().getMapBubbleCollection().length = 0; return bubbleCollection; } // Возвращает слой с показателями карты function getWorkLayer() { var layer = getParentLayer().getSubLayer("Visuals"); return layer; } // Возвращает слой с областями карты function getParentLayer() { var layer = map.getLayer("Regions"); return layer; } // Отображает столбиковый показатель для указанной области слоя карты function showBar(shapeId) { var bars = getWorkLayer().getMapBarCollection(); for (var i in bars) { var bar = bars[i]; if (bar.getShape().getId() == shapeId) { bar.setIsVisible(true); bar.draw(); } } } // Отображает круговой показатель для указанной области слоя карты function showPie(shapeId) { var pies = getWorkLayer().getMapPieCollection(); for (var i in pies) { var pie = pies[i]; if (pie.getShape().getId() == shapeId) { pie.setIsVisible(true); pie.draw(); } } } // Отображает пузырьковый показатель для указанной области слоя карты function showBubble(shapeId) { var bubbles = getWorkLayer().getMapBubbleCollection(); for (var i in bubbles) { var bubble = bubbles[i]; if (bubble.getShape().getId() == shapeId) { bubble.setIsVisible(true); bubble.draw(); } } } // Отображает значок для указанной области слоя карты function showMilestone(shapeId) { var parentLayer = map.getLayer("Regions"); var milestones = getWorkLayer().getMilestones(); for (var i in milestones) { var milestone = milestones[i]; if (milestone.getShape().getId() == shapeId) { milestone.draw(); map.getPaper().appendChild(milestone.getDomNode()); } } } var shapeId = "RU-KYA"; // Создаём новый слой var layer = createLayer("Visuals"); // Отрисовываем показатели и значок showBar(shapeId); showPie(shapeId); showBubble(shapeId); showMilestone(shapeId); // Отображаем всплывающую подсказку drawToolTip(shapeId); // Перерисовываем карту map.draw();
В результате выполнения примера для слоя с идентификатором «Regions» был добавлен дочерний слой «Visuals», в котором размещены столбиковый, круговой и пузырьковый показатели. Для области слоя карты «RU-KYA» были отображены значок и всплывающая подсказка:
См. также: