ボタンをクリックする前にコントロールがアクティブになる

私はカスタムボタンをクリックするとイベントを発生させます。ボタンがクリックされた後ではなくinitでアクティブになる問題があります。init上の関数をトリガしているようです。 コントロールは正しく切り替わりますが、デフォルトでまたはinit内で有効になっているようです。

ここにコードです:

/* other Controls */   
    polygon: new OpenLayers.Control.Measure(
        OpenLayers.Handler.Polygon, {
            persist: true,
            immediate: true,
            handlerOptions: {
                layerOptions: {
                    renderers: renderer,
                    styleMap: styleMap
                }
            }
        }   
    ),
    choose: new OpenLayers.Control.Button({ /** **/
        activateControl: false,             /** Problem here **/
        trigger: tochiSentaku()             /** **/
    })
};

var control;
for(var key in allControls) {
    control = allControls[key];
    control.events.on({
        "measure": handleMeasurements,
        "measurepartial": handleMeasurements,
        "button": tochiSentaku
    });
    map.addControl(control);
}

function toggleControl(element){
    for(key in allControls){
        var control = allControls[key];
        if(control.active){
            control.deactivate();
        }
        if(element.value == key && element.click){
            control.activate();
            vlayer.removeAllFeatures();
            var mybutton = document.getElementById('output');
            var xyz = "";
            mybutton.innerHTML = xyz;
        }
        else{
            control.deactivate();
        }

    }
}

tochiSentaku関数

function tochiSentaku(evt){
    var element = document.getElementById("attribute");
    map.events.register('click', map, function(e){
        vlayer.destroyFeatures(vlayer,features);
        var coord = $(".olControlMousePosition").text();

        $("#attribute").html('
Now Loading...
'); $.getJSON("scripts/tochi_sentaku.php",{coord:coord}, function(data){ $("#attribute").html("<button id=\"attribute_map\" onclick=\"" + data.the_geom + "\">地図</button><table id='attribute_tbl'><tr><th>項目名</th><th>値</th></tr></table>"); for(var key in data){ if(key != "the_geom"){ $("#attribute_tbl").append("<tr><td>" + key + "</td><td>" + data[key] + "</td></tr>"); } } $("#attribute_map").click(); }); }); }

誰かが私にいくつかのアドバイスを与えることができれば大いに感謝します。

1

2 答え

コードスニペットに tochiSentaku の定義を指定していません。

しかし私の最初の推測は、コードを

choose: new OpenLayers.Control.Button({
    activateControl: false,
    trigger: tochiSentaku
})
0
追加された
提案ありがとう。私は試してみましたが、initの中で発射することさえ止めました。イベントを完全に停止します。私の質問にtochiSentaku()関数を追加しました。
追加された 著者 Yus,

理解した。使用する代わりに

trigger:tochiSentaku

私は使った

activate:tochiSentaku

@simplyharshあなたの提案をありがとう

0
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript