0

次の方法で定義された多数のデータレイヤーがあります。

var mylayer = new OpenLayers.Layer.TMS("MY LAYER NAME", "", { type: "png", getURL: my_layer_geturl, isBaseLayer: false, visibility: false, attribution: 'Some Attribution text' });

これをマップに追加すると、レイヤースイッチャーに表示され、すべて問題ありません。ただし、結果の HTML に次のものが含まれていることに気付きました。

<div class="dataLayersDiv">
    <input type="checkbox" id="OpenLayers.Control.LayerSwitcher_29_input_MY LAYER NAME" name="MY LAYER NAME" value="MY LAYER NAME">
    <span class="labelSpan" style="vertical-align: baseline;">MY LAYER NAME</span>
    <br>
</div>

フォーム入力 ID と NAME の両方にレイヤー名がそのまま含まれていることがわかります。ID 属性と NAME 属性は非常に簡単に無効になる可能性があるため、これは少し奇妙に思えます。さらに複雑なことに、レイヤー名をさまざまな言語で表示/非表示にするために、レイヤーラベルにマークアップを追加したいと考えています。フォームフィールドにマークアップを入れることは、a)ゴミであり、b)フォームが送信されたときにIISが「潜在的に安全でない要求」を訴える原因となります(asp.net Webフォーム、ページをラップする単一のフォームであるため、負荷をかけずに実際にエスケープすることはできません)仕事!)

安全でないページ リクエストの警告を回避する方法は知っていますが、そうすると、管理者が少し停止します。基になるコントロール マークアップに干渉することなくレイヤー ラベルを適切に設定する方法を誰かが知っているかどうか疑問に思っていましたか?

乾杯、スティーブ

4

1 に答える 1

2

これには LayerSwitcher を変更して、より良い方法で独自のマークアップを作成する必要があると思います... OL3 についてはすでに何かが進行中である可能性があります。今後の更新を確認しましたか?

(人けのない酒場の壁にタンブルウィードが一時的に止まった。)

于 2010-12-20T18:23:44.063 に答える