With the frameState stuff the map renderer need not listen to view changes. The map renderer receives orders from the map. These orders are renderFrame_ calls with frameState objects representing the current state.
What we want in the end is vector tiles repeated just as raster
tiles. This change only avoids repeated tiles with the same
content being rendered and stored in the cache.
Will show a list of lines in sourcefiles that either contains the string TODO
or FIXME.
Example output:
user@host:~/src/ol3 $ ./build.py fixme
src/ol/source/xyzsource.js has 4 matches:
#1 // FIXME add minZoom support
#46 // FIXME use goog.nullFunction ?
#59 // FIXME factor out common code
#76 // FIXME we shouldn't need a typecast here
src/ol/interaction/dragpaninteraction.js has 2 matches:
#1 // FIXME works for View2D only
#39 // FIXME works for View2D only
This needs more work still - see inline TODOs. It also has a
major bug - rendered vector features do not scale and do not
change their offset during panning. So only the initial view is
correct.
This commit adds several features:
- rename of class to better reflect its behaviour
- full ol.Object support
- integration with postrender event for integration with animations and
render loop
- minimised DOM modifications
- more precise positioning
- element placed in DIV to avoid modifications to user-supplied element
- correctly handle changes to the positioning property
There is a ton of room for optimization here. The vector layer renderer should only render dirty areas and could maintain a cache of rendered canvas tiles. The vector source could have a simple spatial index for features (by tile coord). Need to also discuss how to work with this animation framework (to avoid the excess work while waiting for tiles to load on every other layer).