带有 OpenLayers 代码的 ExtJS4 工具栏
我们在应用程序中使用带有 ExtJS3.2 的 Mapfish 工具栏。现在我们正在尝试将ExtJS3.2升级到ExtJS4。但 Mapfish 不适用于 ExtJS4。因此,我们使用的是 ExtJS4 工具栏,但是为工具栏中的按钮编写的 openlayers 代码没有执行。
ExtJS4 代码是:
var extoolbar = Ext.create('Ext.toolbar.Toolbar',{
border : true,
width : 100,
height : 40,
layout : hbox
});
var btn1 = {
xtype : 'button',
enableToggle : true,
tooltip : "Zoom In",
id : 'zoominbtn',
listeners : {
'click' : fucntion(){
new OpenLayers.Control.ZoomBox({
alwaysZoom : true,
draw : function(){
this.handler = new OpenLayers.Handler.Box(
this, {done: this.zoomBox}, {keyMask: this.keyMask});
}
});
}
}
};
extoolbar.add(btn1);
这里,如果我们单击放大按钮,控件将进入 OpenLayers.Control.ZoomBox,但 draw
方法不会执行。我的问题是:
- 代码有什么问题吗?
- 还有其他方法可以使用 ExtJS4 处理 OpenLayers 吗?
We are using Mapfish toolbar with ExtJS3.2 in our application. Now we are trying to upgrade ExtJS3.2 to ExtJS4. But mapfish is not working with ExtJS4. So, we are using ExtJS4 toolbar, but openlayers code which is written for button in toolbar is not executing.
ExtJS4 code is:
var extoolbar = Ext.create('Ext.toolbar.Toolbar',{
border : true,
width : 100,
height : 40,
layout : hbox
});
var btn1 = {
xtype : 'button',
enableToggle : true,
tooltip : "Zoom In",
id : 'zoominbtn',
listeners : {
'click' : fucntion(){
new OpenLayers.Control.ZoomBox({
alwaysZoom : true,
draw : function(){
this.handler = new OpenLayers.Handler.Box(
this, {done: this.zoomBox}, {keyMask: this.keyMask});
}
});
}
}
};
extoolbar.add(btn1);
Here if we click on the zoom in button control is going into OpenLayers.Control.ZoomBox
but the draw
method is not executing. My questions are:
- Is there any thing wrong in the code?
- Is there any other way to approach OpenLayers with ExtJS4?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我也在使用 MapFish,使用 Ext 3.4。
首先,你有一个
fucntion()
而不是function()
:)然后,可能我不明白你想做什么,但我认为-IMAO - 这不是使用 ZoomBox 控件的好方法......
您应该在创建 ZoomBox 控件时将其添加到地图中,并为该控件指定一个 id,然后为切换事件使用侦听器,如下所示:
这样,当您按下按钮时,您将启用该控件,当您再次按下该按钮时,您将启用该控件。禁用它。
请记住,ZoomBox 控件一旦激活,也可以通过按住 Shift 始终可用
或者您也可以使用 GeoExt,这非常简单,就像这样
但我不知道 GeoExt 是否或如何与 Ext 4 一起使用
至于你问题的第2点,很抱歉,我无法回答这个问题,因为我没有使用Ext 4的经验。
I am using MapFish too, with Ext 3.4.
First of all you have a
fucntion()
instead offunction()
:)Then, may be I haven't understand what you want to do, but I think -IMAO- that this is not a good way to use the ZoomBox control...
You should add the ZoomBox control to the map while you create it and give the control an id, then use a listener for the toggle event like this:
This way when you press the button you enable the control, and when you press it again you disable it.
Keep in mind that the ZoomBox control, once active, can also be always available by holding shift
Or you could also use GeoExt, which is really easy, like this
But I don't know if or how GeoExt works with Ext 4
As for the point 2 of your question, I am sorry but I cannot answer that, because I have no experience with Ext 4.