Tag: topojson

GeoJSON和TopoJSON的区别

GeoJSON和TopoJSON有什么区别,我什么时候可以使用它们? GitHub上的TopoJSON的描述意味着TopoJSON文件小了80%。 那么为什么不直接使用TopoJSON呢?

D3js:自动标签放置,以避免重叠? (强制排斥)

如何在地图的标签上应用排斥力,自动find合适的位置? 博斯托克“让我们来做一个地图” 迈克·博斯托克的让我们做一个地图 (截图如下)。 默认情况下,标签放在点的坐标和多边形/多边形的path.centroid(d) +一个简单的左或右alignment,所以他们经常input冲突。 手工制作的标签展示位置 我遇到的一个改进就是需要添加一个人工修改的IF ,并根据需要添加如下内容: .attr("dy", function(d){ if(d.properties.name==="Berlin") {return ".9em"} }) 随着标签数量的增加,整体变得越来越肮脏: //places's labels: point objects svg.selectAll(".place-label") .data(topojson.object(de, de.objects.places).geometries) .enter().append("text") .attr("class", "place-label") .attr("transform", function(d) { return "translate(" + projection(d.coordinates) + ")"; }) .attr("dy", ".35em") .text(function(d) { if (d.properties.name!=="Berlin"&&d.properties.name!=="Bremen"){return d.properties.name;} }) .attr("x", function(d) { return d.coordinates[0] > -1 ? 6 : -6; […]

在给定geoJSON对象的d3中居中映射

目前在D3中,如果你有一个你要绘制的geoJSON对象,你必须对它进行缩放和翻译,以便达到想要的大小并将其翻译为中心。 这是一个非常乏味的尝试和错误的任务,我想知道是否有人知道更好的方式来获得这些价值? 所以,例如,如果我有这个代码 var path, vis, xy; xy = d3.geo.mercator().scale(8500).translate([0, -1200]); path = d3.geo.path().projection(xy); vis = d3.select("#vis").append("svg:svg").attr("width", 960).attr("height", 600); d3.json("../../data/ireland2.geojson", function(json) { return vis.append("svg:g") .attr("class", "tracts") .selectAll("path") .data(json.features).enter() .append("svg:path") .attr("d", path) .attr("fill", "#85C3C0") .attr("stroke", "#222"); }); 我怎么能得到.scale(8500)和.translate([0,-1200])而不是一点一点的?