[OpenLayers-Users] Text labels

Nicholas Efremov-Kendall n.e.kendall at gmail.com
Fri Oct 2 08:12:44 EDT 2009


Hi all,

First, thanks Paul and Jan for your very helpful emails. I've decided to try
to go with Paul's method first, and if I understand correctly this should be
it: However I get a parse error on the third line (default: OpenLayers...).
I'm not sure what's going on here. Any suggestions?

var styleMap = new OpenLayers.StyleMap(
                {
                 default: OpenLayers.Util.applyDefaults(
                    {
                       label: '${Name}',
                       strokeWidth:1,
                       strokeColor:"#CCCCCC",
                       fillColor: "green"
                    })
                }
            );

            var cities = new OpenLayers.Layer.GML ("7th Century Cities",
"data/cities.gml",
            {
                styleMap: styleMap,
                projection: new OpenLayers.Projection("EPSG:4326"),
                format: OpenLayers.Format.GML
            }
            );
            map.addLayer(cities);

On Tue, Sep 29, 2009 at 3:57 PM, Paul Spencer <pagameba at gmail.com> wrote:

> A simpler styleMap would be to take the Name directly from the feature's
> attributes, but using a context to provide functions that calculate
> per-feature styles is very powerful
>
> var styleMap = new OpenLayers.StyleMap({
>  default: OpenLayers.Util.applyDefaults({
>    label: '${Name}', // this comes from feature.attributes.Name and is
> case sensitive
>    strokeWidth:1,
>    strokeColor:"#CCCCCC",
>    fillColor: "green"
>  })
> });
>
> Cheers
>
> Paul
>
>
> On 2009-09-29, at 5:28 AM, Jan H. van der Ven wrote:
>
>  Dear Nicholas,
>>
>>
>> I use a StyleMap like so:
>>
>>   var styleMap = new OpenLayers.StyleMap(
>>   {
>>     "default":OpenLayers.Util.applyDefaults(
>>     {
>>       fillColor: stateColors[layerIndex],
>>       fillOpacity: 0.4,
>>       strokeColor: stateColors[layerIndex],
>>       strokeWidth: 2,
>>       label : "${getName}", // see context below
>>       labelAlign: "cm",
>>       fontColor: "yellow",
>>       fontSize: "12px",
>>       fontFamily: "Verdana",
>>       fontWeight: "bold"
>>     }
>>     ,OpenLayers.Feature.Vector.style["default"])
>>
>>
>> ,"select":OpenLayers.Util.applyDefaults({},OpenLayers.Feature.Vector.style["select"])
>>   });
>>   // the labelFunction prevents the modify handles being labeled with
>> "undefined"
>>   styleMap.styles["default"].context={getName: labelFunction};
>>
>> This StyleMap is then added as a parameter to the layer:
>>   var laag = new OpenLayers.Layer.GML(
>>   layerName,
>>   url,
>>   {
>>     format:OpenLayers.Format.GeoJSON,
>>     visibility:false,
>>     styleMap:styleMap,
>>     isBaseLayer:false,
>>   });
>>
>> And the labelFunction is used to show the label only at a certain zoom
>> level:
>>
>>  function labelFunction(feature){
>>     if (map.getZoom()>4){
>>       if (feature.attributes.name != undefined){
>>         return feature.attributes.name;
>>       }else{
>>         return '';
>>       }
>>     }else{
>>       return '';
>>     }
>>   }
>>
>> The part about undefined has to do with edit handles.
>>
>> Kind regards,
>>
>>
>> Jan
>>
>> Nicholas Efremov-Kendall wrote:
>>
>>> Hi all,
>>>
>>> Sorry to bug you all with a pretty simple question. I have a shp file
>>> converted to GML, with an attribute called "name." I'd like for this
>>> to be places as a label by the polygon feature. I think, based on my
>>> digging around on the lists that I need a function to first get the
>>> feature.attributes.Name <http://feature.attributes.Name>, which would
>>> then pass it to the label. Does anyone have a good example of this, or
>>> suggestions on implementation?
>>>
>>> var cities = new OpenLayers.Layer.GML ("7th Century Cities",
>>> "data/cities.gml",
>>> {
>>> style: {strokeWidth:1, strokeColor:"#CCCCCC", fillColor: "green"},
>>> projection: new OpenLayers.Projection("EPSG:4326"),
>>> format: OpenLayers.Format.GML,
>>>
>>>             label: "$name",
>>>
>>>
>>> }
>>> );
>>> map.addLayer(cities);
>>>
>>>
>>> --
>>> Nicholas Efremov-Kendall
>>> Fulbright Student 2009-2010, Ukraine
>>> nefremov at artsci.wustl.edu <mailto:nefremov at artsci.wustl.edu>
>>> c/o Halyna Yerko
>>> Balzaka 92a, Kv 27
>>> 02232
>>> Kyiv, Ukraine
>>> (mob) +380963576524
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at openlayers.org
>>> http://openlayers.org/mailman/listinfo/users
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> No virus found in this incoming message.
>>> Checked by AVG - www.avg.com
>>> Version: 8.5.409 / Virus Database: 270.13.114/2401 - Release Date:
>>> 09/28/09 17:53:00
>>>
>>>
>>>
>> _______________________________________________
>> Users mailing list
>> Users at openlayers.org
>> http://openlayers.org/mailman/listinfo/users
>>
>
>


-- 
Nicholas Efremov-Kendall
Fulbright Student 2009-2010, Ukraine
nefremov at artsci.wustl.edu
c/o Halyna Yerko
Balzaka 92a, Kv 27
02232
Kyiv, Ukraine
(mob) +380963576524
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20091002/1a39d1da/attachment.html


More information about the Users mailing list