次の方法で定義された多数のデータレイヤーがあります。
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フォーム、ページをラップする単一のフォームであるため、負荷をかけずに実際にエスケープすることはできません)仕事!)
安全でないページ リクエストの警告を回避する方法は知っていますが、そうすると、管理者が少し停止します。基になるコントロール マークアップに干渉することなくレイヤー ラベルを適切に設定する方法を誰かが知っているかどうか疑問に思っていましたか?
乾杯、スティーブ