0

私たちのアプリケーションでは 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メソッドは実行されません。私の質問は次のとおりです。

  1. コードに何か問題がありますか?
  2. ExtJS4 で OpenLayers にアプローチする他の方法はありますか?
4

1 に答える 1

1

Ext 3.4 で MapFish も使用しています。

まず、:)のfucntion()代わりにfunction()

次に、あなたが何をしたいのか理解していないかもしれませんが、これは ZoomBox コントロールを使用する良い方法ではないと思います...作成中に ZoomBox コントロールをマップに追加し、コントロールに ID を与えてから、トグル イベントのリスナーを次のように使用します。

listeners: {
    'toggle': function(button, pressed) {
        var ctrl = map.getControl('yourid');
        if(pressed){
            // Activate the control
            ctrl.activate();
        } else {
            // Deactivate the control
            ctrl.deactivate();
        }
    }
}

このように、ボタンを押すとコントロールが有効になり、もう一度押すと無効になります。ZoomBox コントロールは、一度アクティブになると、Shift キーを押し続けることでいつでも使用できることに注意してください。

または、このように非常に簡単な GeoExt を使用することもできます。

GeoExt.Action({
    map: map,
    text: "Zoom Box",
    control: new OpenLayers.Control.ZoomBox()
});

しかし、GeoExt が Ext 4 で機能するかどうか、またはどのように機能するかはわかりません

ご質問のポイント 2 については、Ext 4 の経験がないため、申し訳ありませんがお答えできません。

于 2011-08-04T10:25:28.453 に答える