Я тоже использую MapFish с Ext 3.4.
Прежде всего у вас есть fucntion()
вместо function()
:)
Тогда, может быть, я не понял, что вы хотите сделать, но я думаю -IMAO-, что это не очень хороший способ использовать элемент управления ZoomBox ...
Вы должны добавить элемент управления ZoomBox на карту во время его создания и присвоить элементу управления идентификатор, а затем использовать прослушиватель для события переключения, например:
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.