Więc eksperymentuję trochę z D3's geo stream
API
, a rzeczy wydają się nieco mgliste. Czytałem poprzez dokumentację tutaj:Jaki jest właściwy sposób korzystania z projection.stream() D3?
https://github.com/mbostock/d3/wiki/Geo-Streams
Jeden punkt zamieszania mam jest właściwa realizacja transformacji strumienia. Powiedzmy, że tworzę One:
//a stream transform that applies a simple translate [20,5]:
var transform = d3.geo.transform({
point:function(){this.stream.point(x+20,y+5)}
})
Per dokumentacji this.stream References "owinięty stream". Ale jaki jest strumień? Z tego co mogę zebrać, jest to raczej procedura niż jawna struktura danych - sekwencja wywołań danych i funkcji w celu transformacji danych. Powyższa składnia wydaje się sugerować, że owinięty strumień jest po prostu obiekt zawierający „stream listeners”
Idąc dalej, jestem w stanie zastosować strumień przekształcać stosując metodę projekcji:
//a path generator with the transform applied using the projection() method
var path = d3.geo.path().projection(transform);
Podczas I don” Zupełnie zrozumiemy mechanikę leżącą u podstaw, efekt wydaje się stosunkowo prosty: podstawowa funkcja transformacji generatora ścieżek jest wywoływana z przekształconymi argumentami x,y
.
Dla mojego przypadku użycia, nie uważam tego za pomocne, szczególnie, że moje dane wejściowe nie są już wyświetlane. Chciałbym użyć rzutowania, aby najpierw transformować dane, a następnie przekształcać te wyjściowe współrzędne. W tym celu istnieje ogólny wzór transformacji warstwowych?
widzę, że D3
ma zapewnić projection.stream (słuchacza) wzorzec, który ma zastosowanie wystająca przekształcić pierwszy, przed nałożeniem słuchacza, ale nie jestem pewien, jak zaimplementować to. Jaki powinien być argument słuchacza? Oto przykład: http://jsfiddle.net/kv7yn8rw/2/.
Wszelkie wskazówki będą mile widziane!
starasz się przenieść swój projektowany 20px danych map w prawo i 5px w dół za pomocą tej metody? Czy jest coś więcej, co próbujesz zrobić, kiedy odwołujesz się do transformacji warstwowych? – Elijah
Niestety, nagroda nie wygenerowała żadnych odpowiedzi. Zacząłem przeglądać kod źródłowy, ale zgadywałem, że 'var path2 = d3.geo.path(). Projection (proj.stream (transform));' powinien działać dla twojego skrzypiec, i wciąż był wyrzucaniem błędów. Mogę wrócić, gdy będę mieć więcej czasu; Chciałem dowiedzieć się więcej o tym, jak działają metody d3.geo. – AmeliaBR