Openlayers - 在地图上绘制字符串

时间:2013-07-15 11:44:02

标签: javascript map openlayers gis openstreetmap

我试图在Openlayers中的一个图层上绘制一个字符串/字符(例如,显示一条路线 - >在路线附近绘制描述或楼层编号)。 问题:可以将一个Label添加到Openlayers.Vector,但我的Application有一个Vector,其中包含多个几何,每个都应该使用不同的String进行渲染。 也许存在一些像这样的Geometry:layer.addFeature(new Openlayers.StringGeometry(" text",x,y)左右。我找不到任何东西。

有人能给我一个暗示吗?

1 个答案:

答案 0 :(得分:10)

要向Vector图层的功能添加自定义文本标签,我建议如下:

1)将StyleMap添加到您的Vector图层中:

var vectorLayer = new OpenLayers.Layer.Vector("Vector", 
{
    styleMap: new OpenLayers.StyleMap(            
    {
        label : "${labelText}",                    
        fontColor: "blue",
        fontSize: "12px",
        fontFamily: "Courier New, monospace",
        fontWeight: "bold",
        labelAlign: "lc",
        labelXOffset: "14",
        labelYOffset: "0",
        labelOutlineColor: "white",
        labelOutlineWidth: 3
    })
});

请注意,此样式地图中的labelText表示此标签的文字将取自相应的要素属性。

2)对于添加到图层的每个要素,请指定已定义labelText的属性:

var features = [];
var pt = new OpenLayers.Geometry.Point(0, 0);
features.push(new OpenLayers.Feature.Vector(pt, {labelText: "This is my label"}));
vectorLayer.addFeatures(features);

此解决方案的唯一限制是您必须为每个点添加功能,而无法使用OpenLayers.Geometry.MultiPoint