직교 투영을 사용하여지도를 만들었으며 회전이 원활하지 않아 성능이 향상되었습니다 (약 6-7FPS).d3.js : 직교 회전 최적화
topojson 파일 (world-100m)로 제작 된 세계지도입니다. 나는 국가와 상호 작용하고 그들을 색칠해야합니다. 많은 svg : 경로가 있습니다. 국가는입니다. 나는 자동 회전 기능이 로딩 후
이 d3.timer를 사용하여 시작 : 너무 느린 이유autoRotate =() =>
@start_time = Date.now() # Store the current time (used by automatic rotation)
d3.timer() =>
dt = Date.now() - @start_time
if @stopRotation or dt > @config.autoRotationDuration
true
else
@currentRotation[0] = @currentRotation[0] - @config.autoRotationSpeed
@projection.rotate @currentRotation
redrawPathsOnRotationOrScale(@currentRotation, @projection.scale())
false
redrawPathsOnRotationOrScale = (rotation, scale, duration = 1) =>
@currentRotation = rotation
@projection
.rotate(@currentRotation)
.scale(scale)
@groupPaths.selectAll("path")
.attr("d", path)
이해하기 위해, 나는 크롬에서 프로파일 레코드를 만들어 여기에 결과 :
애니메이션 프레임이가 느린 부분이다하지만 난 정말 그게 뭔지 모르겠어요 해고 보인다. 그리고 그것을 열면 GC 이벤트 2 개 (가비지 컬렉터)가 있지만 주변에는 아무것도 없습니다 ...이 90ms 동안 무슨 일이 일어나고 있는지 알고 계십니까? 성능을 향상시키기
모든 팁은
미리 감사에 의해 환영 :-) 이상입니다! 그런데
, 그것은 다음과 같습니다
topojson 파일을 생성하는 동안 --simplify-proportion 0.6을 추가하면 많은 세부 사항을 잃지 않고 11 ~ 20FPS의 성능을 향상 시켰습니다. –