Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将D3.js GeoJSON和CSV加载到CodeIgniter中_Javascript_Html_Codeigniter_D3.js_Svg - Fatal编程技术网

Javascript 如何将D3.js GeoJSON和CSV加载到CodeIgniter中

Javascript 如何将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", "#

我的问题是: 无法加载从script.js加载的GeoJSON和CSV

这是我的网站在localhost中的结构

本地主机/BMKG

所以我的问题是

如何从我的JS加载csv和geojson映射,但CodeIgniter始终将其识别为链接

script.js

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”)解决了问题,刚刚看到你的评论,很高兴你解决了:)