我从d3 / crossfilter数据集(从CSV加载)向传单映射添加点。添加点后,我想缩放/平移以使该点在视图中。最简单的方法是什么...我想我可以编写一些最小/最大经度/纬度函数,然后遍历数据集来创建一个与map.fitBound一起使用的边界框,但想知道是否有更简单的方法...
代码段: -
function updateMapData() {
g.selectAll("*").remove();
var feature = g.selectAll("circle")
.data(byID.top(Infinity))
.enter()
.append("circle")
.style("stroke", "black")
.style("opacity", .95)
.style("fill", "black")
.attr("r", 4);
map.on("viewreset", updateMap);
updateMap();
function updateMap() {
feature.attr("transform",
function(d) {
return "translate("+
map.latLngToLayerPoint(d.LatLng).x +","+
map.latLngToLayerPoint(d.LatLng).y +")";
}
)
};
};
答案 0 :(得分:0)
最后,我只是运行了以下内容(但我仍然想知道是否有更简单的方法,或者我是否应该使用geoJSON或d3.geo代替......)
bounds = [];
byID.top(Infinity).forEach(function (d) {
bounds.push(d.LatLng);
});
map.fitBounds(bounds, {pan: {animate: true, duration: 1.5, easeLinearity: 0.25}});