3

アイコンを追加し、画像のbottonにテキストを追加する必要があります。これどうやってするの ?

このスタイルで試してみましたが、テキストが画像の中央にレンダリングされます。

var vector = new ol.layer.Vector({
      source: new ol.source.Vector({
        projection: ol.proj.get('EPSG:4326')
      }),
      style: new ol.style.Style({rules: [
        new ol.style.Rule({
          symbolizers: [
            new ol.style.Icon({
                url: 'http://127.0.0.1/app/img/imageTest.png',
                opacity: 0.75,
                width: 12,
                height: 12
            }),
            new ol.style.Text({
                color: '#000',
                text: ol.expr.parse('i'),
                fontFamily: 'Calibri,sans-serif',
                fontSize: 12
            })
          ]
        })
      ]})
    });
map.addLayer(vector);

var f = new ol.Feature({
    'i': 1,
    'size': 20
});
f.setGeometry( new ol.geom.Point([lon,lat]) );

var features = new Array();
features.push(f);
vector.addFeatures(features);
4

2 に答える 2

2

Canvas でこのコードを使用しており、OL v3.0.0-beta.5 で動作します。

 function getTextStyle(text, offsetX) {
    return new ol.style.Text({
      fill : new ol.style.Fill({
        color : '#330'
      }),
      stroke : new ol.style.Stroke({
        color : '#fff',
        width : 4
      }),
      text : text,
      font : '12px Verdana',
      offsetX : offsetX ? offsetX : 0,
      offsetY : 12
    });
  }

現在「実験的」なドキュメントになっているものも参照してください: http://ol3js.org/en/master/apidoc/ol.style.Text.html (編集: 2014 年には実験的でした ...)

于 2014-06-27T15:47:26.373 に答える
0

「labelYOffset」を使用してラベルを移動する必要があります。

グラフィックの高さが 20 ピクセルの場合は、下に 12 ピクセル移動してみてください

        new ol.style.Text({
            color: '#000',
            fontFamily: 'Calibri,sans-serif',
            fontSize: 12,
            label:"${NAME}",
            labelYOffset: -12
        })

「ラベル」パラメーターは、外部ファイルの NAME フィールドから取得します。label align パラメータは通常、スタイルまたはスタイル マップで使用されます。これを調整して、データの取得元を反映する必要があります。
Canvas レンダラーでは、labelXOffset と labelYoffset はサポートされていないことに注意してください。したがって、これが機能するには、レイヤーが SVG を使用していることを確認する必要があります。例えば。

var point = new OpenLayers.Layer.Vector("GeoJSON", {
    strategies: [new OpenLayers.Strategy.Fixed()],
    styleMap: mystyle,
    protocol: new OpenLayers.Protocol.HTTP({
        url: "kml/my.geojson",
        format: new OpenLayers.Format.GeoJSON()
    }),
    renderers: ["SVG"]
});
于 2013-08-30T00:43:42.447 に答える