Ticket #1120: stylemap.diff
| File stylemap.diff, 33.6 kB (added by ahocevar, 7 months ago) |
|---|
-
tests/Control/test_SelectFeature.html
old new 33 33 } 34 34 35 35 function test_Control_SelectFeature_select(t) { 36 t.plan( 7);36 t.plan(2); 37 37 var map = new OpenLayers.Map("map"); 38 38 var layer = new OpenLayers.Layer.Vector(); 39 39 map.addLayer(layer); 40 40 var control = new OpenLayers.Control.SelectFeature(layer); 41 41 var feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(0,0)); 42 42 layer.addFeatures(feature); 43 layer.drawFeature = function() { } 43 layer.drawFeature = function(feature, style) { 44 layer.styleMap.createSymbolizer(feature, style); 45 } 44 46 control.select(feature); 45 t.eq(feature. style.strokeColor, OpenLayers.Feature.Vector.style['select'].strokeColor, "feature style is set to select style");47 t.eq(feature.renderIntent, "select", "render intent is set to select"); 46 48 control.unselect(feature); 47 t.eq(feature.style.strokeColor, OpenLayers.Feature.Vector.style['default'].strokeColor, "feature style is set back to old style"); 48 49 // Don't ever overwrite my feature style with undefined properties from the selectStyle 50 feature.style = {externalGraphic: "foo.png", pointRadius: 39}; 51 control.selectStyle.pointRadius = undefined; 52 control.select(feature); 53 t.eq(feature.style.pointRadius, 39, "undefined style property inherited from original feature style"); 54 control.unselect(feature); 55 56 // Ok, that one went well. But I'm sure you cannot handle OL.Style. 57 feature.style = new OpenLayers.Style({externalGraphic: "foo.png", pointRadius: 39}); 58 control.select(feature); 59 t.eq(feature.style.pointRadius, 39, "undefined style property inherited from original feature style object"); 60 control.unselect(feature); 61 62 // Wow, but using OL.Style as selectStyle will break you. 63 control.selectStyle = new OpenLayers.Style({strokeColor: "green"}); 64 control.select(feature); 65 t.eq(feature.style.strokeColor, "green", "style correct if both feature.style and selectStyle are OL.Style"); 66 control.unselect(feature); 67 68 // Not bad, not bad. And what if I set feature.style back to a style hash? 69 feature.style = layer.style; 70 control.select(feature); 71 t.eq(feature.style.strokeColor, "green", "style still correct with only selectStyle being OL.Style"); 72 control.unselect(feature); 73 t.eq(feature.style.strokeColor, OpenLayers.Feature.Vector.style["default"].strokeColor, "style set back to original correctly"); 49 t.eq(feature.renderIntent, "default", "render intent is set back to default"); 74 50 } 75 51 76 52 function test_Control_SelectFeature_clickFeature(t) { -
tests/Control/test_ModifyFeature.html
old new 5 5 6 6 function test_ModifyFeature_constructor(t) { 7 7 t.plan(3); 8 var layer = {name: "foo", styleMap: {createSymbolizer: function(){}}}; 8 9 var layer = { 10 styleMap: {createSymbolizer: function(){}}, 9 11 events: { 10 12 on: function() {} 11 13 } … … 77 79 */ 78 80 79 81 var control = new OpenLayers.Control.ModifyFeature({ 80 style: null,82 styleMap: {createSymbolizer: function(){}}, 81 83 events: { 82 84 on: function() {} 83 85 } -
tests/test_StyleMap.html
old new 1 <html> 2 <head> 3 <script src="../lib/OpenLayers.js"></script> 4 <script type="text/javascript"> 5 6 function test_StyleMap_constructor(t) { 7 t.plan(6); 8 9 var options = {'foo': 'bar'}; 10 var styleMap = new OpenLayers.StyleMap(null, options); 11 t.ok(styleMap instanceof OpenLayers.StyleMap, 12 "new OpenLayers.StyleMap returns object" ); 13 t.eq(styleMap.foo, "bar", "constructor sets options correctly"); 14 15 var style = new OpenLayers.Style(); 16 var styleMap = new OpenLayers.StyleMap(style); 17 t.eq(styleMap.styles["default"].defaultStyle.strokeColor, style.defaultStyle.strokeColor, "default style set correctly from style object"); 18 19 var style = {strokeColor: "blue"}; 20 var styleMap = new OpenLayers.StyleMap(style); 21 t.eq(styleMap.styles["default"].defaultStyle.strokeColor, "blue", "default style set correctly from style hash"); 22 23 var style = { 24 "default": new OpenLayers.Style({strokeColor: "yellow"}), 25 "select": {strokeColor: "blue"}}; 26 var styleMap = new OpenLayers.StyleMap(style); 27 t.eq(styleMap.styles["default"].defaultStyle.strokeColor, "yellow", "default style set correctly from a mixed hash of renderIntents"); 28 t.eq(styleMap.styles["select"].defaultStyle.strokeColor, "blue", "select style set correctly from a mixed hash of renderIntents"); 29 } 30 31 function test_StyleMap_destroy(t) { 32 t.plan(2); 33 var styleMap = new OpenLayers.StyleMap(); 34 t.ok(styleMap.styles["default"], "Got a default style after initialisation"); 35 styleMap.destroy(); 36 t.ok(!styleMap.styles, "StyleMap styles successfully destroyed"); 37 } 38 39 </script> 40 </head> 41 <body> 42 <div id="map" style="width:500px;height:500px"></div> 43 </body> 44 </html> -
tests/test_Style.html
old new 11 11 t.ok(style instanceof OpenLayers.Style, 12 12 "new OpenLayers.Style returns object" ); 13 13 t.eq(style.foo, "bar", "constructor sets options correctly"); 14 t.eq(typeof style.createS tyle, "function", "style has a createStylefunction");14 t.eq(typeof style.createSymbolizer, "function", "style has a createSymbolizer function"); 15 15 } 16 16 17 17 function test_Style_create(t) { … … 45 45 46 46 var feature = new OpenLayers.Feature.Vector( 47 47 new OpenLayers.Geometry.Point(3,5), 48 {"foo": "bar"}, 49 style); 48 {"foo": "bar"}); 50 49 51 50 feature.fid = "1"; 52 51 // for this fid, the above rule should apply 52 53 layer.styleMap = new OpenLayers.StyleMap(style); 53 54 54 55 layer.addFeatures([feature]); 55 56 map.addLayer(layer); … … 58 59 map.setCenter(new OpenLayers.LonLat(3,5), 10); 59 60 60 61 // at this scale, the feature should be green 61 var createdStyle = style.createS tyle(feature);62 var createdStyle = style.createSymbolizer(feature); 62 63 t.eq(createdStyle.externalGraphic, "barbar.png", "Calculated property style correctly."); 63 64 t.eq(createdStyle.display, "", "Feature is visible at scale "+map.getScale()); 64 65 t.eq(createdStyle.fillColor, "green", "Point symbolizer from rule applied correctly."); 65 66 66 67 map.setCenter(new OpenLayers.LonLat(3,5), 9); 67 68 // at this scale, the feature should be red 68 createdStyle = style.createS tyle(feature);69 createdStyle = style.createSymbolizer(feature); 69 70 t.eq(createdStyle.display, "", "Feature is visible at scale "+map.getScale()); 70 71 t.eq(createdStyle.fillColor, "yellow", "Point symbolizer from rule applied correctly."); 71 72 72 73 map.setCenter(new OpenLayers.LonLat(3,5), 8); 73 74 // at this scale, the feature should be yellow 74 createdStyle = style.createS tyle(feature);75 createdStyle = style.createSymbolizer(feature); 75 76 t.eq(createdStyle.display, "", "Feature is visible at scale "+map.getScale()); 76 77 t.eq(createdStyle.fillColor, "red", "Point symbolizer from rule applied correctly."); 77 78 78 79 map.setCenter(new OpenLayers.LonLat(3,5), 7); 79 80 // at this scale, the feature should be invisible 80 createdStyle = style.createS tyle(feature);81 createdStyle = style.createSymbolizer(feature); 81 82 t.eq(createdStyle.display, "none", "Feature is invisible at scale "+map.getScale()); 82 83 t.eq(createdStyle.fillColor, baseStyle.fillColor, "Point symbolizer from base style applied correctly."); 83 84 84 85 feature.fid = "2"; 85 86 // now the rule should not apply 86 87 87 createdStyle = style.createS tyle(feature);88 createdStyle = style.createSymbolizer(feature); 88 89 t.eq(createdStyle.fillColor, baseStyle.fillColor, "Correct style for rule that does not apply to fid=\"2\"."); 89 90 } 90 91 91 function test_Style_createS tyle(t) {92 function test_Style_createSymbolizer(t) { 92 93 t.plan(2); 93 94 var style = new OpenLayers.Style(); 94 95 var rule = new OpenLayers.Rule({ … … 104 105 style.applySymbolizer = function(r) { 105 106 t.eq(r.id, rule.id, "(plain) applySymbolizer called with correct rule"); 106 107 } 107 style.createS tyle(new OpenLayers.Feature.Vector());108 style.createSymbolizer(new OpenLayers.Feature.Vector()); 108 109 109 110 rule.evaluate = function() {return false;}; 110 111 style.applySymbolizer = function(r) { 111 112 t.eq(r.id, elseRule.id, "(else) applySymbolizer called with correct rule"); 112 113 } 113 style.createS tyle(new OpenLayers.Feature.Vector());114 style.createSymbolizer(new OpenLayers.Feature.Vector()); 114 115 } 115 116 116 117 function test_Style_context(t) { … … 126 127 symbolizer: {"Point": {externalGraphic: "${foo}.png"}}}); 127 128 var style = new OpenLayers.Style(); 128 129 style.addRules([rule]); 129 var styleHash = style.createS tyle(new OpenLayers.Feature.Vector());130 var styleHash = style.createSymbolizer(new OpenLayers.Feature.Vector()); 130 131 t.eq(styleHash.externalGraphic, "bar.png", "correctly evaluated rule against a custom context"); 131 132 } 132 133 -
tests/Layer/test_Vector.html
old new 69 69 "OpenLayers.Layer.Vector.removeFeatures(layer.features) removes all feature from the features array"); 70 70 } 71 71 72 function test_Layer_Vector_addStyle (t) {73 t.plan(2);74 var layer = new OpenLayers.Layer.Vector(name);75 var map = new OpenLayers.Map('map');76 map.addLayer(layer);77 var g = new OpenLayers.Geometry.Point(0, 0);78 var f = new OpenLayers.Feature.Vector(g);79 t.eq( f.style, null, "Feature style is null by default.");80 layer.addFeatures(f);81 t.ok( f.style != null, "Feature style is set by layer.");82 }83 84 72 function test_Layer_Vector_drawFeature(t) { 85 73 t.plan(4); 86 74 var layer = new OpenLayers.Layer.Vector("Test Layer"); … … 106 94 t.ok(geometry.equals(f.geometry), 107 95 "calls layer.renderer.drawFeature() with feature.geometry"); 108 96 109 feature.style = 'exists';97 feature.style = {foo: "bar"}; 110 98 layer.drawFeature(feature); 111 99 t.eq(feature.style, s, 112 100 "calls layer.renderer.drawFeature() with feature.style"); 113 101 114 102 feature.style = null; 115 layer.style = 'exists';103 layer.style = {foo: "bar"}; 116 104 layer.drawFeature(feature); 117 t.eq(layer.style , s,105 t.eq(layer.style.foo, s.foo, 118 106 "given null feature style, uses layer style"); 119 107 120 feature.style = 'exists';121 layer.style = 'exists';122 var customStyle = 'custom';108 feature.style = {foo1: "bar1"}; 109 layer.style = {foo2: "bar2"}; 110 var customStyle = {foo: "bar"}; 123 111 layer.drawFeature(feature, customStyle); 124 t.eq(customStyle , s,112 t.eq(customStyle.foo, s.foo, 125 113 "given a custom style, renders with that"); 126 114 127 115 } -
tests/list-tests.html
old new 42 42 <li>test_Feature.html</li> 43 43 <li>Feature/test_Vector.html</li> 44 44 <li>test_Style.html</li> 45 <li>test_StyleMap.html</li> 45 46 <li>test_Rule.html</li> 46 47 <li>Rule/test_Comparison.html</li> 47 48 <li>Rule/test_FeatureId.html</li> -
lib/OpenLayers/Map.js
old new 1275 1275 pan: function(dx, dy, options) { 1276 1276 1277 1277 if (!options) { 1278 options = { animate: true}1278 options = {} 1279 1279 } 1280 1280 // getCenter 1281 1281 var centerPx = this.getViewPortPxFromLonLat(this.getCenter()); -
lib/OpenLayers/Rule/Comparison.js
old new 33 33 /** 34 34 * APIProperty: property 35 35 * {String} 36 * name of the context pro perty to compare36 * name of the context proeprty to compare 37 37 */ 38 38 property: null, 39 39 -
lib/OpenLayers/StyleMap.js
old new 1 /* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD 2 * license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the 3 * full text of the license. */ 4 5 /** 6 * @requires OpenLayers/Style.js 7 * @requires OpenLayers/Feature/Vector.js 8 */ 9 10 /** 11 * Class: OpenLayers.StyleMap 12 */ 13 OpenLayers.StyleMap = OpenLayers.Class({ 14 15 /** 16 * Property: styles 17 * Hash of {<OpenLayers.Style>}, keyed by names of well known 18 * rendering intents (e.g. "default", "temporary", "select"). 19 */ 20 styles: null, 21 22 /** 23 * Property: extendDefault 24 * {Boolean} if true, every render intent will extend the symbolizers 25 * specified for the "default" intent. Otherwise, every rendering intent 26 * is treated as a completely independent symbolizer. 27 */ 28 extendDefault: true, 29 30 /** 31 * Constructor: OpenLayers.StyleMap 32 * 33 * Parameters: 34 * style - {Object} Optional. Either a style hash, or a style object, or 35 * a hash of style objects (style hashes) keyed by rendering 36 * intent 37 * options - {Object} optional hash of additional options for this 38 * instance 39 */ 40 initialize: function (style, options) { 41 this.styles = { 42 "default": new OpenLayers.Style( 43 OpenLayers.Feature.Vector.style["default"]), 44 "select": new OpenLayers.Style( 45 OpenLayers.Feature.Vector.style["select"]), 46 "temporary": new OpenLayers.Style( 47 OpenLayers.Feature.Vector.style["temporary"]) 48 }; 49 50 // take whatever the user passed as style parameter and convert it 51 // into parts of stylemap. 52 if(style instanceof OpenLayers.Style) { 53 // user passed a style object 54 this.styles["default"] = style; 55 } else if(typeof style == "object") { 56 for(var key in style) { 57 if(style[key] instanceof OpenLayers.Style) { 58 // user passed a hash of style objects 59 this.styles[key] = style[key]; 60 } else if(typeof style[key] == "object") { 61 // user passsed a hash of style hashes 62 this.styles[key] = new OpenLayers.Style(style[key]); 63 } else { 64 // user passed a style hash (i.e. symbolizer) 65 this.styles["default"] = new OpenLayers.Style(style); 66 break; 67 } 68 } 69 } 70 OpenLayers.Util.extend(this, options); 71 }, 72 73 /** 74 * Method: destroy 75 */ 76 destroy: function() { 77 for(var key in this.styles) { 78 this.styles[key].destroy(); 79 } 80 this.styles = null; 81 }, 82 83 /** 84 * Method: createSymbolizer 85 * Creates the symbolizer for a feature for a render intent. 86 * 87 * Parameters: 88 * feature - {<OpenLayers.Feature>} 89 * intent - {String} 90 */ 91 createSymbolizer: function(feature, intent) { 92 if(!feature) { 93 feature = new OpenLayers.Feature.Vector(); 94 } 95 if(!this.styles[intent]) { 96 intent = "default"; 97 } 98 feature.renderIntent = intent; 99 var defaultSymbolizer = {}; 100 if(this.extendDefault && intent != "default") { 101 defaultSymbolizer = this.styles["default"].createSymbolizer(feature); 102 } 103 return OpenLayers.Util.extend(defaultSymbolizer, 104 this.styles[intent].createSymbolizer(feature)); 105 }, 106 107 CLASS_NAME: "OpenLayers.StyleMap" 108 }); -
lib/OpenLayers/Control/SelectFeature.js
old new 95 95 * APIProperty: selectStyle 96 96 * {Object} Hash of styles 97 97 */ 98 selectStyle: OpenLayers.Feature.Vector.style['select'], 98 selectStyle: null, 99 100 /** 101 * Property: renderIntent 102 * {String} key used to retrieve the select style from the layer's 103 * style map. 104 */ 105 renderIntent: "select", 99 106 100 107 /** 101 108 * Property: handler … … 247 254 * feature - {<OpenLayers.Feature.Vector>} 248 255 */ 249 256 select: function(feature) { 250 // Store feature style for restoration later251 if(feature.originalStyle != feature.style) {252 feature.originalStyle = feature.style;253 }254 257 this.layer.selectedFeatures.push(feature); 255 258 256 var selectStyle = this.selectStyle; 257 258 if (feature.style.CLASS_NAME == "OpenLayers.Style") { 259 feature.style = feature.style.createStyle(feature); 260 } else { 261 feature.style = OpenLayers.Util.extend({}, feature.style); 262 } 263 if (selectStyle.CLASS_NAME == "OpenLayers.Style") { 264 selectStyle = selectStyle.createStyle(feature); 265 } 266 OpenLayers.Util.extend(feature.style, selectStyle); 267 268 this.layer.drawFeature(feature); 259 var selectStyle = this.selectStyle || this.renderIntent; 260 261 this.layer.drawFeature(feature, selectStyle); 269 262 this.layer.events.triggerEvent("featureselected", {feature: feature}); 270 263 this.onSelect(feature); 271 264 }, … … 280 273 */ 281 274 unselect: function(feature) { 282 275 // Store feature style for restoration later 283 if(feature.originalStyle != null) { 284 feature.style = feature.originalStyle; 285 } 286 this.layer.drawFeature(feature); 276 this.layer.drawFeature(feature, "default"); 287 277 OpenLayers.Util.removeItem(this.layer.selectedFeatures, feature); 288 278 this.layer.events.triggerEvent("featureunselected", {feature: feature}); 289 279 this.onUnselect(feature); -
lib/OpenLayers/Control/ModifyFeature.js
old new 167 167 this.layer = layer; 168 168 this.vertices = []; 169 169 this.virtualVertices = []; 170 this.styleVirtual = OpenLayers.Util.extend({}, this.layer.style); 170 this.styleVirtual = OpenLayers.Util.extend({}, 171 this.layer.style || this.layer.styleMap.createSymbolizer()); 171 172 this.styleVirtual.fillOpacity = 0.3; 172 173 this.styleVirtual.strokeOpacity = 0.3; 173 174 this.deleteCodes = [46, 100]; … … 409 410 this.layer.destroyFeatures(this.virtualVertices); 410 411 this.virtualVertices = []; 411 412 } 412 this.layer.drawFeature(this.feature, this.selectControl. selectStyle);413 this.layer.drawFeature(this.feature, this.selectControl.renderIntent); 413 414 } 414 415 // keep the vertex on top so it gets the mouseout after dragging 415 416 // this should be removed in favor of an option to draw under or … … 496 497 // remove the vertex 497 498 vertex.geometry.parent.removeComponent(vertex.geometry); 498 499 this.layer.drawFeature(this.feature, 499 this.selectControl. selectStyle);500 this.selectControl.renderIntent); 500 501 this.resetVertices(); 501 502 this.onModification(this.feature); 502 503 } -
lib/OpenLayers/Feature/Vector.js
old new 59 59 */ 60 60 style: null, 61 61 62 /** 63 * Property: renderIntent 64 * {String} rendering intent currently being used 65 */ 66 renderIntent: "default", 67 62 68 /** 63 69 * Constructor: OpenLayers.Feature.Vector 64 70 * Create a vector feature. -
lib/OpenLayers/Style.js
old new 43 43 /** 44 44 * Property: defaultStyle 45 45 * {Object} hash of style properties to use as default for merging 46 * rule-based style symbolizers onto. If no rules are defined, createStyle47 * will return this style.46 * rule-based style symbolizers onto. If no rules are defined, 47 * createSymbolizer will return this style. 48 48 */ 49 49 defaultStyle: null, 50 50 … … 55 55 */ 56 56 propertyStyles: null, 57 57 58 59 58 /** 60 59 * Constructor: OpenLayers.Style 61 60 * Creates a UserStyle. … … 96 95 }, 97 96 98 97 /** 99 * APIMethod: createStyle98 * Method: createSymbolizer 100 99 * creates a style by applying all feature-dependent rules to the base 101 100 * style. 102 101 * 103 102 * Parameters: 104 103 * feature - {<OpenLayers.Feature>} feature to evaluate rules for 105 * baseStyle - {Object} hash of styles feature styles to extend106 104 * 107 105 * Returns: 108 * { <OpenLayers.Feature.Vector.style>} hash of feature styles106 * {Object} symbolizer hash 109 107 */ 110 createS tyle: function(feature) {108 createSymbolizer: function(feature) { 111 109 var style = OpenLayers.Util.extend({}, this.defaultStyle); 112 110 113 111 var rules = this.rules; -
lib/OpenLayers/Layer/Vector.js
old new 103 103 * {Object} Default style for the layer 104 104 */ 105 105 style: null, 106 107 /** 108 * Property: styleMap 109 * {<OpenLayers.StyleMap>} 110 */ 111 styleMap: null, 106 112 107 113 /** 108 114 * Property: renderers … … 146 152 * {<OpenLayers.Layer.Vector>} A new vector layer 147 153 */ 148 154 initialize: function(name, options) { 149 150 var defaultStyle = OpenLayers.Feature.Vector.style['default'];151 this.style = OpenLayers.Util.extend({}, defaultStyle);152 153 155 OpenLayers.Layer.prototype.initialize.apply(this, arguments); 154 156 155 157 // allow user-set renderer, otherwise assign one … … 163 165 this.displayError(); 164 166 } 165 167 168 if (!this.styleMap) { 169 this.styleMap = new OpenLayers.StyleMap(); 170 } 171 166 172 this.features = []; 167 173 this.selectedFeatures = []; 168 174 }, … … 308 314 //give feature reference to its layer 309 315 feature.layer = this; 310 316 311 if (!feature.style) {312 feature.style = OpenLayers.Util.extend({}, this.style);313 }314 315 317 if (notify) { 316 318 this.events.triggerEvent("beforefeatureadded", { 317 319 feature: feature … … 399 401 * 400 402 * Parameters: 401 403 * feature - {<OpenLayers.Feature.Vector>} 402 * style - {Object} 404 * style - {Object} Symbolizer hash or {String} renderIntent 403 405 */ 404 406 drawFeature: function(feature, style) { 405 if(style == null) { 406 if(feature.style) { 407 style = feature.style; 408 } else { 409 style = this.style; 407 if (typeof style != "object") { 408 var renderIntent = typeof style == "string" ? 409 style : feature.renderIntent; 410 style = feature.style || this.style; 411 if (!style) { 412 style = this.styleMap.createSymbolizer(feature, renderIntent); 410 413 } 411 414 } 412 413 if (style && style.CLASS_NAME &&414 style.CLASS_NAME == "OpenLayers.Style") {415 style = style.createStyle(feature);416 }417 415 418 416 this.renderer.drawFeature(feature, style); 419 417 }, -
lib/OpenLayers.js
old new 175 175 "OpenLayers/Layer/PointTrack.js", 176 176 "OpenLayers/Layer/GML.js", 177 177 "OpenLayers/Style.js", 178 "OpenLayers/StyleMap.js", 178 179 "OpenLayers/Rule.js", 179 180 "OpenLayers/Rule/FeatureId.js", 180 181 "OpenLayers/Rule/Logical.js", -
examples/georss-flickr.html
old new 31 31 // the thumbail attribute of the rss item 32 32 style = new OpenLayers.Style({externalGraphic: "${thumbnail}"}); 33 33 34 // make the thumbnails larger when we select them 35 selectStyle = new OpenLayers.Style({pointRadius: 35}); 36 34 37 // create a rule with a point symbolizer that will make the thumbnail 35 38 // larger if the title of the rss item conatins "powder" 36 39 var rule = new OpenLayers.Rule.Comparison({ … … 47 50 48 51 style.addRules([rule, elseRule]); 49 52 50 markerLayer = new OpenLayers.Layer.Vector("", {style: style}); 53 markerLayer = new OpenLayers.Layer.Vector("", {styleMap: new OpenLayers.StyleMap({ 54 "default": style, 55 "select": selectStyle})}); 51 56 map.addLayer(markerLayer); 52 57 53 58 // control that will show a popup when clicking on a thumbnail 54 59 var popupControl = new OpenLayers.Control.SelectFeature(markerLayer, { 55 selectStyle: style,56 60 onSelect: function(feature) { 57 61 var pos = feature.geometry; 58 62 if (popup) { -
examples/fullScreen.html
old new 23 23 function init(){ 24 24 map = new OpenLayers.Map('map'); 25 25 26 var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",27 "http://labs.metacarta.com/wms/vmap0",28 {layers: 'basic'} );29 26 var jpl_wms = new OpenLayers.Layer.WMS( "NASA Global Mosaic", 30 27 "http://t1.hypercube.telascience.org/cgi-bin/landsat7", 31 28 {layers: "landsat7"}); -
examples/sld.html
old new 32 32 33 33 styles = sld[1]; 34 34 35 waterStyle = styles["WaterBodies"]; 35 // for the hover style, we do not want to use the SLD default as 36 // base style 37 styles["WaterBodies"]["Hover Styler"].defaultStyle = OpenLayers.Util.extend({}, 38 OpenLayers.Feature.Vector.style["select"]); 36 39 37 40 gmlLayers = [ 38 41 // use the sld UserStyle named "Default Styler" 39 42 new OpenLayers.Layer.GML("StateBoundaries", 40 43 "tasmania/TasmaniaStateBoundaries.xml", { 41 style : waterStyle["default"]}),44 styleMap: new OpenLayers.StyleMap(styles["WaterBodies"])}), 42 45 new OpenLayers.Layer.GML("Roads", 43 46 "tasmania/TasmaniaRoads.xml", { 44 style : waterStyle["default"]}),47 styleMap: new OpenLayers.StyleMap(styles["Roads"])}), 45 48 new OpenLayers.Layer.GML("WaterBodies", 46 49 "tasmania/TasmaniaWaterBodies.xml", { 47 style : waterStyle["default"]}),50 styleMap: new OpenLayers.StyleMap(styles["WaterBodies"])}), 48 51 new OpenLayers.Layer.GML("Cities", 49 52 "tasmania/TasmaniaCities.xml", { 50 style : waterStyle["default"]})];53 styleMap: new OpenLayers.StyleMap(styles["Cities"])})]; 51 54 52 // add the first layer with the style passed to the constructor 53 map.addLayer(gmlLayers[0]); 54 // add the other layers after setting the style using the 55 // setStyle() method, which will pick the correct default style 56 // from the styles hash we got back from 57 // OpenLayers.Format.SLD.read() 58 for (var i=1; i<gmlLayers.length; i++) { 59 gmlLayers[i].style = styles[gmlLayers[i].name]["default"]; 60 map.addLayer(gmlLayers[i]); 61 gmlLayers[i].redraw(); 55 for (var i=0; i<gmlLayers.length; i++) { 56 map.addLayer(gmlLayers[i]); 62 57 } 63 58 64 // SLD can also be used for the SelectFeature control65 waterStyle["Hover Styler"].defaultStyle =66 OpenLayers.Feature.Vector.style["select"];67 59 hover = new OpenLayers.Control.SelectFeature(gmlLayers[2], { 68 selectStyle: waterStyle["Hover Styler"],69 hover: true60 hover: true, 61 renderIntent: "Hover Styler" 70 62 }); 71 63 map.addControl(hover); 72 64 hover.activate(); … … 74 66 75 67 // set a new style when the radio button changes 76 68 function setStyle(styleName) { 69 gmlLayers[2].styleMap.styles["default"] = styles["WaterBodies"][styleName]; 77 70 // change the style of the features of the WaterBodies layer 78 var features = gmlLayers[2].features;79 for (var i=0; i<features.length; i++) {80 features[i].style = waterStyle[styleName];81 }82 71 gmlLayers[2].redraw(); 83 72 } 84 73 </script>
