...
Originally in Weave the drawing of the current selection was always done as part of the rendering the map image, this was because originally there was only a single map layer on the client. In this situation each update of the map image included a step, on the server, where the current selection was drawn on top of the map image generated by the underlying map engine before passing the image back to the browser for display.
Wiki Markup |
---|
{graphviz}
digraph {
client[label="Client"]
server[label="Server"]
mapengine[label="Map Engine"]
filter[label="Selection Filter"]
client -> server [label="1 Request"]
server -> mapengine [label="2 Request"]
mapengine -> server [label="3 Image"]
server -> filter [label="4 Image"]
filter -> server [label="5 Image"]
server -> client [label="6 Image"]
}
{graphviz} |
Once support for more than one map engine was available on the client this process was supplemented by configuring the client as such that the original map image was untouched and the current selection was drawn as a completely separate image, where both images were sent to the browser which displayed the selection image on top of the original map image.
Wiki Markup |
---|
{graphviz}
digraph {
client[label="Client"]
server[label="Server"]
mapengine[label="Map Engine"]
filter[label="Selection Filter"]
client -> server [label="1 Request\n(map)"]
client -> server [label="1 Request\n(selection)"]
server -> mapengine [label="2 Request\n(map)"]
server -> mapengine [label="2 Request\n(selection)"]
mapengine -> server [label="3 Image\n(map)"]
mapengine -> server [label="3 Image\n(selection)"]
server -> client [label="4 Image\n(map)"]
server -> filter [label="4 Image\n(selection)"]
filter -> server [label="5 Image\n(selection)"]
server -> client [label="6 Image\n(selection)"]
}
{graphviz} |
This provided improved performance for the client since it no longer required and entire map redraw if just the selection was changed, and was all done through configuration. The configuration basically involved creating a dummy map engine, based on the original map engine, that never ended up drawing any of it's layers but instead went through the process outlined above of having the selection drawn on the (empty) image it generated.
But this was only ever a hack since it relied upon the use of a dummy map engine configured through guesswork.
Now however this dummy map engine can be replaced by a map engine specifically designed to draw a separate selection layer on top of other layer in the client browser, it's this map engine, the Selection Map Engine that is described here.
...
Once support for more than one map engine was available on the client this process was supplemented by configuring the client as such that the original map image was untouched and the current selection was drawn as a completely separate image, where both images were sent to the browser which displayed the selection image on top of the original map image.
This provided improved performance for the client since it no longer required and entire map redraw if just the selection was changed, and was all done through configuration. The configuration basically involved creating a dummy map engine, based on the original map engine, that never ended up drawing any of it's layers but instead went through the process outlined above of having the selection drawn on the (empty) image it generated.
But this was only ever a hack since it relied upon the use of a dummy map engine configured through guesswork.
Now however this dummy map engine can be replaced by a map engine specifically designed to draw a separate selection layer on top of other layer in the client browser, it's this map engine, the Selection Map Engine that is described here.
Configuration of the server map engine
...