perf(map): optimize geoPathsFor
method
#1792
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Okay, well, I must admit I got sidetracked when working on map annotations ;)
I noticed the way we first generate a SVG path for a country, then tear it apart to round numbers to one decimal place, and then reconstructing the SVG path is not very performant.
It turns out that d3 allows passing a context to the projection functions. The context is normally used to render to, say, a canvas element, but it's also perfectly fine for our use case here.
And indeed, in my very unscientific testing,
geoPathsFor
takes:The return value is totally unchanged, which the SVG tester will confirm.