- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用这个 Info window with chart ESRI 教程。
我想为较小的屏幕定制 dojox 饼图:
@media only screen
and (max-device-width: 320px) {
...
}
是否可以为自定义屏幕尺寸使用自定义 dojox 图表尺寸?
例如饼图为{width: 60px; height: 60px} 仅当在 max-device-width: 320px 的屏幕上加载时?
最佳答案
是的,这是可能的。
不过恐怕你不能仅通过 CSS 实现这一点,因为图表的大小取决于各种因素。如图表半径
, map 信息窗口大小
,容器大小<
等
解决方案-您可以根据屏幕大小动态更改上述值,您可以为此使用 window resize event
..这就是您实现此目的的方法。
下面是工作代码-
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
<title>Info Window with Chart</title>
<link rel="stylesheet" href="https://js.arcgis.com/3.20/dijit/themes/claro/claro.css">
<link rel="stylesheet" href="https://js.arcgis.com/3.20/esri/css/esri.css">
<style>
html, body, #map {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
}
.chart {
width:100px;
height:100px;
padding:0px !important;
}
</style>
<script src="https://js.arcgis.com/3.20/"></script>
<script>
var map;
// Try other themes: Julie, CubanShirts, PrimaryColors, Charged, BlueDusk, Bahamation, Harmony, Shrooms
var theme = "Wetland";
require([
"esri/map", "esri/layers/FeatureLayer",
"esri/dijit/InfoWindow", "esri/InfoTemplate",
"esri/symbols/SimpleFillSymbol", "esri/renderers/SimpleRenderer",
"dijit/layout/ContentPane", "dijit/layout/TabContainer",
"dojox/charting/Chart2D", "dojox/charting/plot2d/Pie",
"dojox/charting/action2d/Highlight", "dojox/charting/action2d/MoveSlice", "dojox/charting/action2d/Tooltip",
"dojox/charting/themes/" + theme,
"dojo/dom-construct", "dojo/dom-class",
"dojo/number", "dojo/domReady!"
], function(
Map, FeatureLayer,
InfoWindow, InfoTemplate,
SimpleFillSymbol, SimpleRenderer,
ContentPane, TabContainer,
Chart2D, Pie,
Highlight, MoveSlice, Tooltip,
dojoxTheme,
domConstruct, domClass,
number, parser
) {
// Use the info window instead of the popup.
var infoWindow = new InfoWindow(null, domConstruct.create("div"));
infoWindow.startup();
map = new Map("map", {
basemap: "streets",
center: [-113.405, 43.521],
infoWindow: infoWindow,
zoom: 6
});
map.infoWindow.resize(180, 200);
var template = new esri.InfoTemplate();
// Flag icons are from http://twitter.com/thefella, released under creative commons.
template.setTitle("<b><img src='flags/${STATE_ABBR}.png'> ${STATE_NAME}</b>");
template.setContent(getWindowContent);
var statesLayer = new FeatureLayer("https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5", {
mode: FeatureLayer.MODE_ONDEMAND,
infoTemplate: template,
outFields: ["*"]
});
var symbol = new SimpleFillSymbol();
statesLayer.setRenderer(new SimpleRenderer(symbol));
map.addLayer(statesLayer);
function getWindowContent(graphic) {
// Make a tab container.
var tc = new TabContainer({
style: "width:100%;height:100%;"
}, domConstruct.create("div"));
// Display attribute information.
var cp1 = new ContentPane({
title: "Details",
content: "<a target='_blank' href='https://en.wikipedia.org/wiki/" +
graphic.attributes.STATE_NAME + "'>Wikipedia Entry</a><br><br>Median Age: " +
graphic.attributes.MED_AGE + "<br>Median Age (Male): " +
graphic.attributes.MED_AGE_M + "<br>Median Age (Female): " +
graphic.attributes.MED_AGE_F
});
// Display a dojo pie chart for the male/female percentage.
var cp2 = new ContentPane({
title: "Pie Chart"
});
tc.addChild(cp1);
tc.addChild(cp2);
// Create the chart that will display in the second tab.
var c = domConstruct.create("div", {
id: "demoChart"
}, domConstruct.create("div"));
var chart = new Chart2D(c);
domClass.add(chart, "chart");
// Apply a color theme to the chart.
chart.setTheme(dojoxTheme);
chart.addPlot("default", {
type: "Pie",
radius: 45,
htmlLabels: true
});
tc.watch("selectedChildWidget", function(name, oldVal, newVal){
if ( newVal.title === "Pie Chart" ) {
chart.resize(100,100);
}
});
// Calculate percent male/female.
var total = graphic.attributes.POP2000;
var male = number.round(graphic.attributes.MALES / total * 100, 2);
var female = number.round(graphic.attributes.FEMALES / total * 100, 2);
chart.addSeries("PopulationSplit", [{
y: male,
tooltip: male,
text: "Male"
}, {
y: female,
tooltip: female,
text: "Female"
}]);
//highlight the chart and display tooltips when you mouse over a slice.
new Highlight(chart, "default");
new Tooltip(chart, "default");
new MoveSlice(chart, "default");
cp2.set("content", chart.node);
return tc.domNode;
}
});
</script>
</head>
<body class="claro">
<div id="map"></div>
</body>
</html>
希望这对您有所帮助:)
关于javascript - 在移动屏幕上调整 dojox 图表的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43965160/
我正在向 dojox.grid.DataGrid 添加一个新的空白行,并希望将焦点放在新行的第一个单元格中。 我通过调用添加行: var new_row = {}, attributes = sto
我正在使用dojo.gfx在我的网站上创建矢量形状和文本,当我“dojo.require”-ing我的Javascript中的所有依赖项时,一切正常。但是,当我在自定义构建中构建所需的所有内容时(尤其
根据标题,我真的很想知道如何在数据图中进行实时更新??因为这个网站很旧SitePen datachart ,他们仍然在 Dojo 1.3 和 Persevere 1.0,现在 Dojo 已经升级到 1
如何获取 dojox.enhancedGrid 的选定行对象? 我正在使用 selectionMode: 'single' 例如单选按钮。 dijit.byId("gridViewWidget").s
我使用 dojo 1.8 版创建了一个简单的柱形图,我想为每一列添加鼠标悬停时的突出显示效果。 Dojo 的 dojox 图表 API 提供了一个名为 Highlight 的类,您应该能够实例化注入(
我正在加载网络 map ID,并且在 feature_layer 弹出窗口中有 2 个图表。我想用一些简单的东西来更改图表主题,例如: colors: ["#00ff78", "#7f0043", "
我似乎无法找到 dojox.storage 最近某处记录。是 dojox.storage闯入 1.7(AMD)? 似乎单元测试甚至不起作用。 /dojo-release-1.7.2-src/dojox
如何禁用或启用对 dojox 数据网格中的选择性单元格的编辑,即 想象一下,我在数据网格中有两列 (A, B)。我希望 B 的列值可以根据 A 列的值进行编辑。我在堆栈溢出中看到了一个特定于 DOJO
我正在使用具有可编辑单元格的dojox.grid.EnhancedGrid。 空格键触发编辑模式(这是一种ok-ish方法,我猜)。但是,如果我以编程方式(通过相邻单元格中的链接)或通过双击触发编辑模
使用dojox.charting创建柱形图。 x 轴标签是日期,如果系列数为 10 或更多,即使使用了 dropLabels: false,似乎也只会打印一个标签。 当我调整循环以在 9 次迭代时停止
我正在尝试将noDataMessage设置为dojox.grid.EnhancedGrid,网格工作正常,当商店获取数据时它显示它是行,没有问题,但是我需要当商店没有数据时网格将向我显示个性化消息。我
在使用 dojo 工具包渲染一个简单的折线图时,我越来越抓狂了。一切都很好,除了工具提示不会在鼠标悬停时显示。 ChartData 是具有此对象的列表结构: [{'x':x1, 'y':y1,
我如何访问 dojox-chart 并将其作为 js 对象获取?在普通的 dijit 小部件中,它可以与 registry.byId("id") 配合使用,但这不适用于 dojox-chart。 我也
我有 2 个 html 页面 A 和 B。页面 A 有一个 dojox/layout/contenpane 如下: 我正在使用 ContentPane 的 href 属性(使用 XHR)在 A 中加
我正在使用这个 Info window with chart ESRI 教程。 我想为较小的屏幕定制 dojox 饼图: @media only screen and (max-device-wi
我正在尝试根据网格中的值在 DojoX (1.2.3) 网格中设置行样式。 网格布局: var view1 = { noscroll: true,
您如何管理 DojoX 的使用情况生产应用程序中的代码或小部件? Dojo Toolkit由 Core、Dijit 和 DojoX 组成。作为扩展工具包的新想法的孵化器,DojoX 代码和小部件的功能
我正在使用一个包含 DataGrid 对象的小部件。当包含在第一个选项卡(这是可见的选项卡)中时,小部件工作正常,但当我在第二个选项卡上使用相同的代码时就不行了。 代码是相同的,我已经做了几次检查以确
我发现 dojox.charting.action2d.Tooltip需要一个自定义函数来为标签提供文本。挑战在于我要显示的标签文本包含在 dojo.data.ItemFileReadStore 中。
我有一个圆形仪表(dojox.dgauges.CircularGauge 的子类),它有多个刻度,每个刻度都有一个关联的指示器 (dojox.dgauges.CircularValueIndicato
我是一名优秀的程序员,十分优秀!