Skip to content

Add support for performant hover and overlay rendering - #40

Open
henryptung wants to merge 3 commits into
SpatialServer:masterfrom
palantir:add-multiple-draw-passes-for-hover
Open

Add support for performant hover and overlay rendering#40
henryptung wants to merge 3 commits into
SpatialServer:masterfrom
palantir:add-multiple-draw-passes-for-hover

Conversation

@henryptung

Copy link
Copy Markdown
Contributor

Modify visibleLayers to allow for mapping.

visibleLayers can now be specified as a { [string]: string } map. This allows specification of multiple, differently-styled render passes based on the same layer data. Is particularly useful for rendering overlay-style interactive elements (like hover).
Empty visibleLayers array now means no layers, instead of all layers shown. Slightly API-breaking, though this seems like the more consistent value (probably better to treat absent/null as the special "show all" value, rather than empty array, which logically seems more like "show none".
Also exposed MVTFeature.redraw method, to allow individual features to be restyled rapidly during hover interaction without redrawing the whole layer (or using a double .toggle() hack).

henryptungand others added 3 commits August 5, 2015 21:21
- visibleLayers can now be specified as a { [string]: string } map.
This allows specification of multiple, differently-styled render
passes based on the same layer data. Is particularly useful for
rendering overlay-style interactive elements (like hover).
- Empty visibleLayers array now means no layers, instead of all layers
shown. Slightly API-breaking, though this seems like the more
consistent value (probably better to treat absent/null as
the special "show all" value, rather than empty array, which
logically seems more like "show none".
This allows individual MVTFeatures to be restyled
by setting the style on them, then redrawing just
the tiles containing the feature (rather than mutating
one piece of the style and redrawing the whole layer).
This allows for fast hover interaction.
Brought in rbush to accelerate featureAt at high feature scale.
This makes it a viable replacement for UtfGrid
in hover interaction. Didn't actually implement hover styling here,
since I opted to provide custom styling using a
combination of mouseover/move/out listeners on the layer
and featureAt, as well as the overlay-drawing code from
before.
@henryptunghenryptung changed the title Add multiple draw passes for hoverAdd support for performant hover and overlay renderingSep 16, 2015
@rgwozdz

Copy link
Copy Markdown

Hello @henryptung - we're considering whether we want to merge the non-backward compatible change to the visibleLayers property. Hope to come to consensus in the next few weeks.

Comment threadsrc/MVTFeature.js

self._setStyle(self.mvtLayer.style);
redrawTiles(self);
this.redraw();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in this context, this.redraw is undefined; it should use self.redraw instead

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@henryptung@rgwozdz@jguthmiller