件名: Re^9: 中心十字アイコンの追加
記事No 659
投稿日 : 2014/10/30(Thu) 23:38:07
投稿者 あにねこ
参照先
マーシーさん、こんばんは。

> 3) document.getElementById('ccross').onchange = function() {
> var obj = new OpenLayers.Control.CenterCross({crosslength: 32, bold: 1});
> if (document.getElementById('ccross').checked) {
> map.addControl(obj); //十字線を表示
> } else {
> map.removeControl(obj); //十字線を消去
> }
> }  //とした場合は、

ここで定義した無名の関数は、チェックボタンを on/off するたびに
(onchange = 状態が変化するたびに)呼び出されます。
呼び出しと次の呼び出しの間では、変数 obj が保持されている必要があります。
関数の中で var obj とすると、その変数(ローカル変数)の寿命は関数が実行されている間だけです。
なので、次のようにする必要があると思います。

var obj = new OpenLayers.Control.CenterCross({crosslength: 32, bold: 1});
document.getElementById('ccross').onchange = function() {
if (this.checked) {
map.addControl(obj); //十字線を表示
} else {
map.removeControl(obj); //十字線を消去
}
}

なお、this はこの関数の中では、document.getElementById('ccross') を表します。
以上、こちらではテストしていないので違ってるかも知れませんが(その可能性大)、
お試しください。

関連スレッド

返信フォーム
おなまえ
eメール
タイトル
メッセージ
参照先
画像UP
暗証キー (英数字で8文字以内)
投稿キー (右画像の数字を入力) 投稿キー

- WebForum -