1 | <html> |
---|
2 | <head profile="http://www.w3.org/2002/12/namespace"> |
---|
3 | <link rel="stylesheet" type="text/css" href="../../../../dijit/themes/dijit.css"> |
---|
4 | <link rel="stylesheet" type="text/css" href="../../../../dijit/themes/tundra/tundra.css"> |
---|
5 | <title>GFX Layer</title> |
---|
6 | <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
---|
7 | |
---|
8 | <!-- hosted version --> |
---|
9 | <script type="text/javascript" src="http://openlayers.org/api/2/OpenLayers.js"></script> |
---|
10 | |
---|
11 | <script type="text/javascript"> |
---|
12 | var djConfig = { |
---|
13 | isDebug : true, |
---|
14 | parseOnLoad : true |
---|
15 | }; |
---|
16 | </script> |
---|
17 | |
---|
18 | <script type="text/javascript" src="../../../../dojo/dojo.js"></script> |
---|
19 | |
---|
20 | <script type="text/javascript"> |
---|
21 | require([ "dojo/ready", |
---|
22 | "dojo/_base/array", |
---|
23 | "dojo/_base/lang", |
---|
24 | "dojox/geo/openlayers/widget/Map", |
---|
25 | "dojox/geo/openlayers/GfxLayer", |
---|
26 | "dojox/geo/openlayers/Point", |
---|
27 | "dojox/geo/openlayers/LineString", |
---|
28 | "dojox/geo/openlayers/Collection", |
---|
29 | "dojox/geo/openlayers/GeometryFeature", |
---|
30 | "dojo/parser"], function(ready, arr, lang, Map, GfxLayer, Point, LineString, Collection, GeometryFeature){ |
---|
31 | |
---|
32 | ready(function(){ |
---|
33 | var map = dijit.byId("map"); |
---|
34 | var layer = new GfxLayer("GfxLayer"); |
---|
35 | map.map.addLayer(layer); |
---|
36 | var p1 = { |
---|
37 | x : 7.154126, |
---|
38 | y : 43.651748 |
---|
39 | }; |
---|
40 | var pg1 = new Point(p1); |
---|
41 | |
---|
42 | var p2 = { |
---|
43 | x : 7.1541, |
---|
44 | y : 43.6517 |
---|
45 | }; |
---|
46 | var pg2 = new Point(p2); |
---|
47 | |
---|
48 | var grp = new Collection([pg1, pg2]); |
---|
49 | |
---|
50 | var gf = new GeometryFeature(grp); |
---|
51 | gf.setStroke("red"); |
---|
52 | gf.setShapeProperties({ |
---|
53 | r : 10 |
---|
54 | }); |
---|
55 | layer.addFeature(gf); |
---|
56 | |
---|
57 | var cx = 7.154; |
---|
58 | var cy = 43.651; |
---|
59 | var ex = 0.001; |
---|
60 | |
---|
61 | var a1 = [{ |
---|
62 | x : cx - ex, |
---|
63 | y : cy + ex |
---|
64 | }, { |
---|
65 | x : cx + ex, |
---|
66 | y : cy + ex |
---|
67 | }, { |
---|
68 | x : cx + ex, |
---|
69 | y : cy - ex |
---|
70 | }, { |
---|
71 | x : cx - ex, |
---|
72 | y : cy - ex |
---|
73 | }, { |
---|
74 | x : cx - ex, |
---|
75 | y : cy + ex |
---|
76 | }]; |
---|
77 | |
---|
78 | ex = 0.00018; |
---|
79 | var a2 = [{ |
---|
80 | x : cx - ex, |
---|
81 | y : cy + ex |
---|
82 | }, { |
---|
83 | x : cx + ex, |
---|
84 | y : cy + ex |
---|
85 | }, { |
---|
86 | x : cx + ex, |
---|
87 | y : cy - ex |
---|
88 | }, { |
---|
89 | x : cx - ex, |
---|
90 | y : cy - ex |
---|
91 | }, { |
---|
92 | x : cx - ex, |
---|
93 | y : cy + ex |
---|
94 | }]; |
---|
95 | |
---|
96 | var f1 = new LineString(a1); |
---|
97 | var f2 = new LineString(a2); |
---|
98 | |
---|
99 | grp = new Collection([f1, f2]); |
---|
100 | gf = new GeometryFeature(grp); |
---|
101 | gf.setStroke("blue"); |
---|
102 | gf.setFill([0, 0, 0, 0.2]); |
---|
103 | layer.addFeature(gf); |
---|
104 | arr.forEach(a2, function(p){ |
---|
105 | var pg = new Point(p); |
---|
106 | gf = new GeometryFeature(pg); |
---|
107 | gf.createShape = lang.hitch(this, function(/* Surface */s){ |
---|
108 | var r1 = 30; |
---|
109 | var r2 = 10; |
---|
110 | var branches = 9; |
---|
111 | var star = makeStarShape(r1, r2, branches); |
---|
112 | var path = s.createPath(); |
---|
113 | path.setShape({ |
---|
114 | path : star |
---|
115 | }); |
---|
116 | return path; |
---|
117 | }); |
---|
118 | gf.setStroke("aqua"); |
---|
119 | // gf.setFill({ |
---|
120 | // color : [ 255, 100, 0 ] |
---|
121 | // }); |
---|
122 | gf.setFill([255, 100, 0]); |
---|
123 | layer.addFeature(gf); |
---|
124 | }); |
---|
125 | layer.redraw(); |
---|
126 | }); |
---|
127 | |
---|
128 | function makeStarShape(r1, r2, b){ |
---|
129 | var TPI = Math.PI * 2; |
---|
130 | var di = TPI / b; |
---|
131 | var s = null; |
---|
132 | var start = Math.PI; |
---|
133 | var end = start + TPI; |
---|
134 | for ( var i = start; i < end; i += di) { |
---|
135 | var c1 = Math.cos(i); |
---|
136 | var s1 = Math.sin(i); |
---|
137 | var i2 = i + di / 2; |
---|
138 | var c2 = Math.cos(i2); |
---|
139 | var s2 = Math.sin(i2); |
---|
140 | if (s == null) { |
---|
141 | s = "M" + (s1 * r1).toFixed(2) + "," + (c1 * r1).toFixed(2) + " "; |
---|
142 | } else { |
---|
143 | s += "L" + (s1 * r1).toFixed(2) + "," + (c1 * r1).toFixed(2) + " "; |
---|
144 | } |
---|
145 | s += "L" + (s2 * r2).toFixed(2) + "," + (c2 * r2).toFixed(2) + " "; |
---|
146 | } |
---|
147 | s += "z"; |
---|
148 | return s; |
---|
149 | } |
---|
150 | |
---|
151 | }); |
---|
152 | </script> |
---|
153 | |
---|
154 | </head> |
---|
155 | <body class="tundra"> |
---|
156 | </head> |
---|
157 | |
---|
158 | <div id="map" dojoType="dojox.geo.openlayers.widget.Map" baseLayerType="'OSM'" |
---|
159 | initialLocation="{ |
---|
160 | position : [7.154126, 43.651748], |
---|
161 | extent : 0.002 }" |
---|
162 | style="background-color: #b5d0d0; width: 100%; height: 100%;"></div> |
---|
163 | |
---|
164 | </body> |
---|
165 | </html> |
---|