0

我正在尝试加载外部 json 文件并将其与 d3.js 一起使用,但它似乎没有加载(我在浏览器中看不到 us-states.json 文件)该文件并且我找不到任何相关错误。这是我的代码:-

我收到此错误:-ActionController::RoutingError (No route matches [GET] "/us-states.json"):

$(document).ready(function() {
                      //Width and height
        var w = 500;
        var h = 300;

        //Define map projection
        var projection = d3.geo.albersUsa()
                           .translate([w/2, h/2])
                           .scale([500]);

        //Define path generator
        var path = d3.geo.path()
                    .projection(projection);

        //Create SVG element
        var svg = d3.select("#testing")
                                .append("svg")
                                .attr("width", w)
                                .attr("height", h);

        //Load in GeoJSON data
        // json = JSON.parse( "us-states.json" );
        // var json = {"my": "json"};
        d3.json("us-states.json", function(error, json) {
                if (error) return console.warn(error);
                //Bind data and create one path per GeoJSON feature
                svg.selectAll("path")
                   .data(json.features)
                   .enter()
                   .append("path")
                   .attr("d", path)
                   .style("fill", "steelblue");

        });
});

文件 us-state.json 位于我的 javascript 文件所在的同一文件夹中。

更新

javascript控制台中的错误是这样的:-

Failed to load resource: the server responded with a status of 404 (Not Found)  

在文件 us-states.json

显示文件的附加屏幕截图位于项目文件夹中:-在此处输入图像描述

4

2 回答 2

0

该代码在哪个文件中?index.html (或一些等价物?)

您与 json 文件一起显示的文件夹中没有任何 Web 文件。json文件需要和调用javascript的页面在同一个文件夹,和d3.js不在同一个文件夹

因此,假设您的 Web 文件位于您的根目录中,您将其称为 d3-project,那么正确的路径将是:app/assets/javascripts/us-states.json

此外,它是一个内部文件,因为您已经在服务器上拥有它。外部意味着您正在访问您自己的网络服务器并下载它。

于 2013-11-02T22:08:56.373 回答
0

您也可以将 us-states.json 文件粘贴到您的公用文件夹中,并将其视为本地文件(即保留您的代码原样)。

有关 Rails 应用程序中 d3 地图的示例,请参阅此: https ://github.com/lisafeather/map_in_app

于 2013-12-11T00:12:29.977 回答