Merge branch 'master' into history
[potlatch2.git] / net / systemeD / potlatch2 / utils / SnapshotLoader.as
1 package net.systemeD.potlatch2.utils {
2
3     import net.systemeD.halcyon.Map;
4     import net.systemeD.halcyon.MapPaint;
5     import net.systemeD.potlatch2.utils.SnapshotConnection;
6
7     /**
8     * Loads a Snapshot layer. Uses lazy-loading such that only when the load() function is
9     * called will the layer be created and added to the map
10     *
11     * @see SnapShotConnection
12     */
13     public class SnapshotLoader {
14
15         private var map:Map;
16         private var _layer:MapPaint;
17         private static const STYLESHEET:String="stylesheets/snapshot.css";
18         private var connection:SnapshotConnection;
19         private var _stylesheet:String;
20
21         /**
22         * Create a new SnapshotLoader
23         * @param map The map object to attach the layer to
24         * @param url The url of the snapshot server. This should be to the api base and
25                      end in a forward slash, e.g. http://example.com/snapshot/api/
26         * @param name The name to give to the layer/connection
27         * @param stylesheet The url of the stylesheet to use for styling the layer
28         */
29         public function SnapshotLoader(map:Map, url:String, name:String, stylesheet:String = null):void {
30             this.map = map;
31             connection = new SnapshotConnection(name, url, '');
32             _stylesheet = (stylesheet && stylesheet != '') ? stylesheet : STYLESHEET;
33             _layer = map.addLayer(connection, _stylesheet, true, true);
34             _layer.visible = false;
35         }
36
37         /**
38         * Load the layer.
39         * Call this the first time you wish to load the layer. After this it will respond
40         * automatically to pan / zooming of the associated Map
41         */
42         public function load():void {
43             _layer.visible = true;
44             connection.loadBbox(map.edge_l, map.edge_r, map.edge_t, map.edge_b);
45         }
46     }
47 }