我对 JSON 相当陌生,我想创建一个 choropleth 示例。http://gabrielflor.it/a-half-decade-of-rising-poverty每当点击年份时,它只会转到 JSON 的不同部分(我假设)。这是为了避免重新绘制整个地图并调用另一个 JSON.js 文件,通常如何完成这样的功能?如果是这样,这些 .JSON 文件会变得很大吗?
2 回答
使用 JSON 只是一种存储每年所需值的方法。当您切换到另一年时,JS 解析给定年份的 JSON 并更新 choropleth。对于您提供的示例,这里是使用的 JSON:
http://gabrielflor.it/static/data/saipe.json
这是一个好方法,因为您每年只需要一个 JSON,并且只加载一次。但是,由于 d3 需要这种方式的数据,我认为如果您想提供额外的数据,例如 gabrielflor 示例,您应该添加另一个 JSON:
http://gabrielflor.it/static/js/d3.poverty-by-county.js?v=121107
他用 d3 像这样加载 JSON:
d3.json('../static/data/states.json', function (json) {
states = json;
});
或者
d3.json('../static/data/saipehighlights.json', function (json) {
saipehighlights = json;
});
如果您查看您提供的示例页面的网络流量(例如使用 Chrome 开发人员工具)。贫困数据文件很大,但映射数据文件更大。您会注意到,网站加载需要更长的时间,但之后它在客户端运行非常流畅,无需进行任何服务器调用。
该网站只是关于浏览信息和漂亮的设计 - 为此我认为如果用户体验更流畅(即用户不必等待年份数据加载),更长的加载时间是完全可以接受的。