From 13207d4ea145d4d08f15b7cbc9ec1f629a208902 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Thu, 7 Apr 2011 18:45:31 +0000 Subject: [PATCH] Casting property values used as symbolizer labels to strings (allowing us to safely split them in the renderers). r=erilem (see #2193, closes #3249) git-svn-id: http://svn.openlayers.org/trunk/openlayers@11886 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Style.js | 4 ++++ tests/Style.html | 18 +++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/OpenLayers/Style.js b/lib/OpenLayers/Style.js index c5efa4b9ec..302a9f2e15 100644 --- a/lib/OpenLayers/Style.js +++ b/lib/OpenLayers/Style.js @@ -191,6 +191,10 @@ OpenLayers.Style = OpenLayers.Class({ style.display = "none"; } + if (style.label && typeof style.label !== "string") { + style.label = String(style.label); + } + return style; }, diff --git a/tests/Style.html b/tests/Style.html index 048df215fc..2c3a18b176 100644 --- a/tests/Style.html +++ b/tests/Style.html @@ -127,7 +127,7 @@ } function test_Style_createSymbolizer(t) { - t.plan(4); + t.plan(5); var style = new OpenLayers.Style(); // override applySymbolizer to log arguments @@ -143,11 +143,17 @@ type: OpenLayers.Filter.Comparison.EQUAL_TO, property: "foo", value: "bar" - }) + }), + symbolizer: { + label: "${labelValue}" + } }); rule.id = "foo=bar rule"; var elseRule = new OpenLayers.Rule({ - elseFilter: true + elseFilter: true, + symbolizer: { + label: "${labelValue}" + } }); elseRule.id = "else rule"; style.addRules([rule, elseRule]); @@ -167,6 +173,12 @@ ); t.eq(log.length, 1, "b) applySymbolizer called once"); t.eq(log[0] && log[0].id, elseRule.id, "b) applySymbolizer called with correct rule"); + + // c) test that label in returned symbolizer is a string even if property value is a number + var symbolizer = style.createSymbolizer( + new OpenLayers.Feature.Vector(null, {foo: "bar", labelValue: 10}) + ); + t.eq(symbolizer.label, "10", "c) feature property cast to string when used as symbolizer label"); }