関数の予期しない動作にたどり着いたという問題がありd3.geo.bounds
ます。
var bounds = d3.geo.bounds(data);
ポイント フィーチャのみを含む geoJSON FeatureCollection の場合、適切な境界ボックスが返されません。具体的には、コレクション内の最初と最後のポイントの x 値が、ポイント グループの最小および最大 x 値の代わりに使用されているように見えます。 . これはhttp://jsbin.com/icosof/4/editで実際に見ることができます。
したがって、返される境界ボックスの座標には、最小および最大の y 値が含まれますが、最大および最小の x 値は含まれません。代わりに、これらはセットの最初と最後の機能から取得されたようです。
[[6113.30166221, -6663.98951731], [5153.32052977, -77.3529517971]]
座標を直接操作して境界オブジェクトを生成する
xvalues = [];
$.each(data.features, function(i,el){
xvalues.push(el.geometry.coordinates[0]);
});
yvalues = [];
$.each(data.features, function(i,el){
yvalues.push(el.geometry.coordinates[1]);
});
console.log([[Math.min.apply(null,xvalues),Math.min.apply(null,yvalues)],
[Math.max.apply(null,xvalues),Math.max.apply(null,yvalues)]]);
望ましい結果が得られます。
[[3397.33954824, -6663.98951731], [6504.18296202, -77.3529517971]]
X座標でソートされたFeatureCollectionを期待していますかd3.geo.bounds
(もしそうなら、どうすればこれを回避できますか)、それともバグですか?