2011-11-25 129 views
1

我有一个自定义的工具栏,它会触发HTML按钮单击事件,在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('<center><img src="images/loading.gif" alt="Now Loading..." /></center>'); 
     $.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(); 
     }); 
    }); 
} 

如果任何人都可以给我一些建议将不胜感激。

回答

0

想通了。除了使用

trigger:tochiSentaku 

我用

activate:tochiSentaku 

@simplyharsh感谢您的建议

0

您尚未在代码片段中提供tochiSentaku的定义。

但我最初的猜测是,该代码更改为

choose: new OpenLayers.Control.Button({ 
    activateControl: false, 
    trigger: tochiSentaku 
}) 
+0

谢谢您的建议。我尝试过,但它确实阻止了在初始化过程中发射。它完全停止了事件。刚刚添加tochiSentaku()函数到我的问题 – Yus

相关问题