Minor bus stop moving UI
[bus.git] / openlayers / examples / graphic-name.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>OpenLayers Graphic Names</title>
    <link rel="stylesheet" href="../theme/default/style.css" type="text/css" />
    <link rel="stylesheet" href="style.css" type="text/css" />
    <script src="../lib/OpenLayers.js"></script>
    <script type="text/javascript">
        // user custom graphicname
        
        OpenLayers.Renderer.symbol.lightning = [0,0, 4,2, 6,0, 10,5, 6,3, 4,5, 0,0];
        OpenLayers.Renderer.symbol.rectangle = [0,0, 10,0, 10,4, 0,4, 0,0];
            
        var map;
 
        function init() {
            map = new OpenLayers.Map('map');
 
            // list of well-known graphic names
            var graphics = ["star", "cross", "x", "square", "triangle", "circle", "lightning", "rectangle"];
            
            // Create one feature for each well known graphic.
            // Give features a type attribute with the graphic name.
            var num = graphics.length;
            var slot = map.maxExtent.getWidth() / num;
            var features = Array(num);
            for(var i=0; i<graphics.length; ++i) {
                lon = map.maxExtent.left + (i * slot) + (slot / 2);
                features[i] = new OpenLayers.Feature.Vector(
                    new OpenLayers.Geometry.Point(
                        map.maxExtent.left + (i * slot) + (slot / 2), 0
                    ), {
                        type: graphics[i]
                    }
                );
            }
            
            // Create a style map for painting the features.
            // The graphicName property of the symbolizer is evaluated using
            // the type attribute on each feature (set above).
            var styles = new OpenLayers.StyleMap({
                "default": {
                    graphicName: "${type}",
                    pointRadius: 10,
                    strokeColor: "fuchsia",
                    strokeWidth: 2,
                    fillColor: "lime",
                    fillOpacity: 0.6
                },
                "select": {
                    pointRadius: 20,
                    fillOpacity: 1
                }
            });
 
            // Create a vector layer and give it your style map.
            var layer = new OpenLayers.Layer.Vector(
                "Graphics", {styleMap: styles, isBaseLayer: true}
            );
            layer.addFeatures(features);
            map.addLayer(layer);
            
            // Create a select feature control and add it to the map.
            var select = new OpenLayers.Control.SelectFeature(layer, {hover: true});
            map.addControl(select);
            select.activate();
            
            map.setCenter(new OpenLayers.LonLat(0, 0), 0);
        }
    </script>
  </head>
  <body onload="init()">
    <h1 id="title">Named Graphics Example</h1>
 
    <div id="tags"></div>
 
    <p id="shortdesc">
        Shows how to use well-known graphic names.
    </p>
 
    <div id="map" class="smallmap"></div>
 
    <div id="docs">
        OpenLayers supports well-known names for a few graphics.  You can use
        the names "star", "cross", "x", "square", "triangle", and "circle" as
        the value for the graphicName property of a symbolizer.
    </div>
  </body>
</html>