<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal>I'm passing GML features to a Vector layer. I need to
put the feature name in a label. Some of my features have numeric names,
for which the leading zeros are significant. My problem: the
leading zeros are being stripped.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>I've tracked this down to OpenLayers.Style.createLiteral(),
which checks to see if the replacement value is numeric and does a parseFloat()
if it is.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal style='margin-left:.5in'> OpenLayers.Style.createLiteral
= function(value, context, feature) {<o:p></o:p></p>
<p class=MsoNormal style='margin-left:.5in'> if (typeof value
== "string" && value.indexOf("${") != -1) {<o:p></o:p></p>
<p class=MsoNormal style='margin-left:.5in'>
value = OpenLayers.String.format(value, context, [feature]);<o:p></o:p></p>
<p class=MsoNormal style='margin-left:.5in'>
value = (isNaN(value) || !value) ? value : parseFloat(value);<o:p></o:p></p>
<p class=MsoNormal style='margin-left:.5in'> }<o:p></o:p></p>
<p class=MsoNormal style='margin-left:.5in'> return value;<o:p></o:p></p>
<p class=MsoNormal style='margin-left:.5in'>};<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>I'm not sure why this is being done. It's not like
style labels should ever be processed as if they are numeric. They seem
to me to be descriptive by definition. Perhaps this same function is being
used elsewhere where the numeric conversion is necessary. Still, it
leaves me with a problem.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>What is the cleanest way to prevent this? It doesn't happen
if I add printable characters to the label field: "name: ${name}"
works fine. Unfortunately, I need an unadorned name, without extra
characters. I've tried adding spaces, and I've tried adding &nbsp;,
and neither worked.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Ideas?<o:p></o:p></p>
</div>
</body>
</html>