2
我正在從d3/crossfilter數據集(從CSV加載)向傳單地圖添加點。點添加後,我想縮放/平移,以便點在視圖中。什麼是最簡單的方法...我想我可以寫一些最小/最大經度/緯度函數,然後循環遍歷數據集來創建一個邊界框,以與map.fitBound一起使用,但是想知道是否存在更簡單的方法...如何計算d3中一組點的傳單的邊界框
代碼片段: -
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 +")";
}
)
};
};
你可以從點構造一個多邊形,然後適合地圖。 – 2014-12-13 12:05:29
最後,我只是運行以下(但我仍然想知道是否應該使用geoJSON或d3.geo,而不是...): - 'bounds = []; byID.top(Infinity).forEach(function(d){ bounds.push(d.LatLng); }); map.fitBounds(bounds);' – Murray 2014-12-14 04:11:52