Javascript 使用angularjs和d3 TypeError的卡通图:未定义不是函数
我正在使用d3.js和angularJS创建斯里兰卡的卡通图。我有一个控制器和一个函数来创建它。它返回一个错误,表示TypeError:undefined不是函数 HTML: 要使d3.cartogram正常工作,需要同时包含和Javascript 使用angularjs和d3 TypeError的卡通图:未定义不是函数,javascript,angularjs,d3.js,cartogram,Javascript,Angularjs,D3.js,Cartogram,我正在使用d3.js和angularJS创建斯里兰卡的卡通图。我有一个控制器和一个函数来创建它。它返回一个错误,表示TypeError:undefined不是函数 HTML: 要使d3.cartogram正常工作,需要同时包含和 cartogram.js必须包含在D3之后,但在运行代码之前,topoJSON应该包含在cartogram.js之前。错误来自哪一行?这一行var carto=D3.cartogram.projectionproj.propertiesfunction d{return
cartogram.js必须包含在D3之后,但在运行代码之前,topoJSON应该包含在cartogram.js之前。错误来自哪一行?这一行var carto=D3.cartogram.projectionproj.propertiesfunction d{return d.properties;你能创建一个可复制的示例吗?没有你的数据很难调试。在你的页面上执行此代码之前你是否包含了?是否定义了d3.cartogram?我想你也必须包含。缺少了吗?@musicaly_ut是的,topoJSON缺少了,现在它工作正常。谢谢
<div ng-controller="CartoGramctrl" class="box-content" ng-init="createCartogram()">
<svg id="map"></svg>
</div>
routerApp.controller('CartoGramctrl',function($scope) {
$scope.createCartogram = function() {
var color = d3.scale.category10();
var map = d3.select("#map");
var munics = map.append("g").attr("id","states").selectAll("path");
var width = 1280 , height =620, centered;
var proj = d3.geo.albers()
.center([3, 8])
.rotate([-80, 0])
.scale(1900 *5)
.translate([width / 2, height / 2]);
var topology,geometrics,carto_features;
var vote_data = d3.map();
var carto = d3.cartogram().projection(proj).properties(function (d){
return d.properties;
});
d3.csv("data/sri-lanka.csv", function (data) {
data.forEach(function (d) {
vote_data.set(d.DISTRICT, [d.POPULATION, d.COLOR]);
})
});
d3.json("data/sri-lanka.json",function (data){
topology = data;
geometrics = topology.objects.states.geometrics;
var neighbors = topojson.neibhours(topology.objects.states.geometrics);
var features = carto.features(topology,geometrics),
path = d3.geo.path().projection(proj);
munics = munics.data(features).enter().append("path").attr("class","states").attr("id",function (d){
return d.properties.name;
}).style("fill",function(d,i) { return color(d.color = d3.max(neighbors[i], function(n) { return features[n].color; }) + 1 | 0); })
.attr("d",path);
munics.append("title").text(function (d){
return d.properties.name;
});
});
};
});