gpt4 book ai didi

javascript - 如何在 kendo ui map 中放置饼图而不是标记

转载 作者:可可西里 更新时间:2023-11-01 13:08:08 25 4
gpt4 key购买 nike

我需要使用 kendo map UI 创建一个 map 小部件。我必须像这样用饼图替换标记 enter image description here .是否可以使用剑道创建 map 小部件??? ,如果可能的话我该怎么做。我不知道如何做到这一点我是剑道的新手。请帮助我...

最佳答案

我找到了解决问题的方法。

第一步:首先制作剑道 map

    $("#geoMap").kendoMap({
renderAs: "canvas",
center: [39.6924, -97.3370],
zoom: 4,
controls: {
attribution: false,
navigator: false,
zoom: false
},
layers: [{
type: "shape",
dataSource: {
type: "geojson",
transport: {
read: "/Scripts/kendo/us.geo.json"
}
},
style: {
stroke: {
color: "#A3A396"
},
fill: {
color: "#E6E6D4"
}
}
}],
shapeCreated: onShapeCreated,
reset: reset
});

创建一个名为onShapeCreated的函数,这个函数会在每次Kendo map 中创建形状后调用

function onShapeCreated(event)
{
.......
}

第 2 步:如果您想在一个州上创建 map ,那么您需要找到该州的位置以使用以下函数找到它

function getShapePositions(event)
{
var result = {};
var segments = event.shape.segments;
result.minX = Number.MAX_VALUE;
result.maxX = Number.MIN_VALUE;

result.minY = Number.MAX_VALUE;
result.maxY = Number.MIN_VALUE;
if (segments) {
for (var i = 0; i < segments.length; i++) {
var anchor = segments[i].anchor();
result.minX = Math.min(result.minX, anchor.x);
result.maxX = Math.max(result.maxX, anchor.x);

result.minY = Math.min(result.minY, anchor.y);
result.maxY = Math.max(result.maxY, anchor.y);
}
}

result.width = result.maxX - result.minX;
result.height = result.maxY - result.minY;

return result;

}

第 3 步:要在 map 上创建饼图,首先我们需要创建一个容器 div 并将其附加到 map ,使用以下代码

var chartDiv = $("<div id=" + event.shape.dataItem.properties.code + " class='state-code-label'></div>")
.appendTo(event.sender.scrollElement);

第 4 步。创建容器后,使用该容器创建饼图

  function createPieChart(chartDiv)
{
$(chartDiv).kendoChart({
renderAs: "canvas",
title: {
visible: false
},
transitions: false,
legend: {
visible: false
},
chartArea: {
height: 100,
width: 100,
background: ""
},
data: [{
category: "Test",
value: 53.8,
color: "#9de219"
},{
category: "Test1",
value: 3.6,
color: "#033939"
}]
}],
seriesDefaults: {
labels: {
visible: false
},
overLay: {
gradient: null
}
},
seriesColors: ["#8F0000", "#CCCCCC"],
series: [{
type: "pie",
field: "Amount",
categoryField: "Category"
}],
tooltip: {
visible: false
}
});
}

第 5 步:最后使用位置对象将图表正确放置在 map 上。

    chartDiv.css({
top: position.minY + position.height / 2 - chartDiv.height() / 2,
left: position.minX + position.width / 2 - chartDiv.width() / 2
});

现在 onShapeCreated 函数看起来像这样

function onShapeCreated(event)
{
var position = getShapePositions(event);

var chartDiv = $("<div id=" + event.shape.dataItem.properties.code + " class='state-code-label'></div>")
.appendTo(event.sender.scrollElement);

createPieChart(chartDiv);

chartDiv.css({
top: position.minY + position.height / 2 - chartDiv.height() / 2,
left: position.minX + position.width / 2 - chartDiv.width() / 2
});

}

关于javascript - 如何在 kendo ui map 中放置饼图而不是标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29743719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com