Javascript 如何将D3.js GeoJSON和CSV加载到CodeIgniter中
我的问题是: 无法加载从script.js加载的GeoJSON和CSV 这是我的网站在localhost中的结构 本地主机/BMKG 所以我的问题是 如何从我的JS加载csv和geojson映射,但CodeIgniter始终将其识别为链接 script.jsJavascript 如何将D3.js GeoJSON和CSV加载到CodeIgniter中,javascript,html,codeigniter,d3.js,svg,Javascript,Html,Codeigniter,D3.js,Svg,我的问题是: 无法加载从script.js加载的GeoJSON和CSV 这是我的网站在localhost中的结构 本地主机/BMKG 所以我的问题是 如何从我的JS加载csv和geojson映射,但CodeIgniter始终将其识别为链接 script.js var width = 1920, height = 1080, populationDomain; var colorRange = ["#532E26", "#9E4825", "#E07A26", "#F2B526", "#
var width = 1920,
height = 1080,
populationDomain;
var colorRange = ["#532E26", "#9E4825", "#E07A26", "#F2B526", "#EDE626", "#E4FD7E", "#9CDA9B", "#55A252", "#26622F"];
var populationDomain = [0, 21, 51, 101, 151, 201, 301, 401, 501];
// Create SVG element
var svg = d3.select("body").insert("svg", "p")
.attr("width", width)
.attr("height", height * 0.8)
.attr("class", "map");
// Projection and path
var projection = d3.geoMercator()
.center([110, -7.5])
.scale(width * 12)
.translate([width / 2, height / 2]);
var path = d3.geoPath().projection(projection);
// Asynchronous tasks, load topojson map and data
d3.queue()
.defer(d3.json, "data/jawa-tengah.json")
.defer(d3.csv, "data/data.csv")
.await(ready);
// Callback function
function ready(error, data, population) {
if (error) throw error;
// population data
var populationData = {};
population.forEach(function (d) { populationData[d.id] = +d.population; });
// Color
var populationColor = d3.scaleThreshold()
.domain(populationDomain)
.range(colorRange);
var g = svg.append("g");
// Draw the map
g.selectAll("path")
.attr("class", "city")
.data(data.features)
.enter()
.append("path")
.attr("d", path)
.attr("stroke", "black")
.attr("stroke-width", "0.2")
.attr("fill", "white")
.transition().duration(2000)
.delay(function (d, i) { return i * 5; })
.ease(d3.easeLinear)
.attr("fill", function (d) {
return populationColor(populationData[d.properties.kabkot]);
});
g.selectAll("path")
.append("title")
.text(function (d) {
return d.properties.kabkot + " : " + populationData[d.properties.kabkot];
});
}
d3.select(window).on("resize", resize);
function resize() {
width = window.innerWidth;
height = window.innerHeight;
projection.scale(width * 1.2)
.translate([width / 2, height / 2]);
d3.select("svg")
.attr("width", width)
.attr("height", height * 0.8);
d3.selectAll("path")
.attr("d", path);
}
我像这样在CodeIgniter中加载我的文件
<!-- D3.js Source -->
<script src="https://d3js.org/d3.v4.min.js"></script>
<script src="https://d3js.org/topojson.v3.min.js"></script>
<script src="https://d3js.org/d3-geo-projection.v2.min.js"></script>
<!-- Script -->
<script type="text/javascript" src="<?php echo base_url() . 'assets/js/script.js' ?>"></script>
您只需要设置基本路径,因此如果您在本地计算机上并使用localhost:8080/MY_PROJECT/那么您必须相应地设置路径:.defer(d3.json,/MY_PROJECT/'+“/data/jawa tengah.json”)…
类似的内容。如果我想加载这些文件,但这取决于MySql中的ID,该怎么办,例如:如果我打开#1数据,它将加载#1.csv;如果我打开#2数据,它将加载#2.csv,依此类推。我该怎么做?谢谢你,我用.defer(d3.csv,/MY_PROJECT/'+“upload/data/”+document.getElementById(“fileinput”).value+“.csv”)解决了问题,刚刚看到你的评论,很高兴你解决了:)