2012-12-19 36 views
5

I zostały pomyślnie załadowane pliki GeoJSON ładowany zbiór funkcji dod3.js GeoJSON i granice

d3.geo.path() 

problem z moim obecnym realizacji jest to, że zaczyna się skalowanie tak, że ścieżka jest punkt, a Za każdym razem muszę powiększać. Teraz wiem, że istnieje wiele sposobów, aby o ustawieniu odpowiedniego poziomu powiększenia, ale miałem nadzieję, aby korzystać

d3.geo.bounds() 

Biorąc pod uwagę następujące GeoJSON cecha:

json.features[0]: 

Object 
geometry: Object 
coordinates: Array[2] 
0: -71.248913 
1: 44.078426 
length: 2 
__proto__: Array[0] 
type: "Point" 
__proto__: Object 
id: 2 
type: "Feature" 
__proto__: Object 

i

json.features[1]: 

Object 
geometry: Object 
coordinates: Array[2] 
0: -71.249021 
1: 44.078387 
length: 2 
__proto__: Array[0] 
type: "Point" 
__proto__: Object 
id: 3 
type: "Feature" 
__proto__: Object 

Jeśli wykonuję

d3.geo.bounds(json.features) 

uzyskać nieskończoność za granice:

d3.geo.bounds(json.features) 
[ 
Array[2] 
0: Infinity 
1: Infinity 
length: 2 
__proto__: Array[0] 
, 
Array[2] 
0: -Infinity 
1: -Infinity 
length: 2 
__proto__: Array[0] 
] 

jestem pewien, co jest nie tak, oczywiście mam dużo larget zbiór danych, niż powyżej, ale po prostu próbuję zrozumieć wyjście. To wyjście nie ma dla mnie sensu i wyraźnie brakuje czegoś prostego w obsłudze D3 danych geoJSON. Pomocna będzie jakakolwiek pomoc w osiągnięciu granic.

Dzięki.

Odpowiedz

9

d3.geo.bounds przyjmuje jedną cechę lub argument FeatureCollection jako argument, a nie szereg funkcji. Zobacz the documentation. Musisz zadzwonić np.

d3.geo.bounds(json.features[0]) 

Jeśli chcesz obwiedni, który zawiera wszystkie funkcje, trzeba uzyskać obwiedni dla każdego z nich po kolei, a następnie obliczyć unię tych.

+9

Tak. A jeśli 'json' jest FeatureCollection, to po prostu' d3.geo.bounds (json) '. – mbostock

+0

wielkie dzięki! zaczynając chwytać d3. – Justin