Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

Draw label as follows:

var styleMarkersLabels = new OpenLayers.Style(
                {
                    strokeWidth: 2,
                    labelYOffset: 14,
                    label: "${label}",
                    fontColor: 'red',
                    fontSize: 16,
                    fontWeight: "bold",
                    labelOutlineColor: "black",
                    labelOutlineWidth: 1
                });
            var vectorPoint = new OpenLayers.Layer.Vector("Узлы (надписи)",
            {
                styleMap: new OpenLayers.StyleMap(
                { "default": styleMarkersLabels,

                "select": { pointRadius: 20}
                })
            });
            map.addLayer(vectorPoint);

            function addPoint(lon, lat, title, ident, layr){
                var ttt = new OpenLayers.LonLat(parseFloat(lon), parseFloat(lat));
                ttt.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
                for (var k = 0; k < layr.features.length; k++) {
                    if(layr.features[k].attributes.PointId==ident) {
                        layr.features[k].move(ttt);
                        layr.features[k].attributes.label=title;
                        return false;
                    }
                }
                var point0 = new OpenLayers.Geometry.Point(parseFloat(lon), parseFloat(lat));
                point0.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
                layr.addFeatures(new OpenLayers.Feature.Vector(point0, { label: title, name: title, PointId: ident }));
            }

            var lat2, lon2, title, ident;
            for (l = 0; l < nodesLabels_Count; l++) {
                lat2 = nodesLabels_arr[l]["points"][0]["lat"];
                lon2 = nodesLabels_arr[l]["points"][0]["lon"];
                title = nodesLabels_arr[l]["title"];
                ident = nodesLabels_arr[l]["ident"];
                addPoint(lon2, lat2, title, ident, map.layers[4]); // Here adds the label
            }

enter image description here

But the halo is shifted slightly. Screen: http://softez.pp.ua/Image.PNG How to fix it? Thanks!

share|improve this question
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.