Hey Bryan,
thanks again for this hint, it is really helpful. I try to implement this in my 
own piece, but due to limited brain and js capacities I can't figure out, what 
I am doing wrong here. Here is the relevant part of my code:

Ext.namespace('Ext.selectdata');
            Ext.selectdata.zooms = [
            [-13.25, -28.77, 45.664, 9.828, 'Whole Africa']
            ];
            var zoomstore = new Ext.data.ArrayStore({
                fields: [{ name : 'ymin', type: 'float'}, { name : 'xmin', 
type: 'float'}, { name : 'ymax', type: 'float'}, { name : 'xmax', type: 
'float'}, { name : 'label', type: 'string'}],
                data : Ext.selectdata.zooms
             });
            var drawControl = new OpenLayers.Control.DrawFeature(
                layer,
                OpenLayers.Handler.Polygon,
                {handlerOptions: {multi: true}}
            );
            
            var mapPanel = new GeoExt.MapPanel({
                region:'center',
                title: "Map",
                layers: [layer,base,roads],
                extent: new OpenLayers.Bounds(-13.25, -28.77, 45.664, 9.828),
                bbar: [
                    new GeoExt.Action({
                        control: drawControl,
                        text: "Create",
                        enableToggle: true
                    }), {
                        text: "Delete",
                        handler: function() {
                            gridPanel.getSelectionModel().each(function(rec) {
                                var feature = rec.get("feature");
                                modifyControl.unselectFeature(feature);
                                store.remove(rec);
                                if(feature.state !== OpenLayers.State.INSERT) {
                                    feature.state = OpenLayers.State.DELETE;
                                    layer.addFeatures([feature]);
                                }
                            });   
                        }
                    },
                    new Ext.form.ComboBox({
                        tpl: '<tpl for="."><div ext:qtip="{label}" 
class="x-combo-list-item">{label}</div></tpl>',
                        store: zoomstore,
                        displayField:'label',
                        typeAhead: true,
                        mode: 'local',
                        forceSelection: true,
                        triggerAction: 'all',
                        width:125,
                        emptyText:'Quick Zooms',
                        selectOnFocus:true,
                        listeners: {'select': function 
(combo,record){this.mapPanel.map.zoomToExtent(new 
OpenLayers.Bounds(record.data.ymin,record.data.xmin,record.data.ymax,record.data.xmax).transform(new
 OpenLayers.Projection("EPSG:4326"), new 
OpenLayers.Projection("EPSG:900913")));},
                        scope:this}
                    }),
                     "->", {
                        text: "Save",
                        handler: function() {
                            store.commitChanges();
                            saveStrategy.save();
                        }
                    }
                ]
            });
            mapPanel.map.addControl(drawControl);
            var modifyControl = new OpenLayers.Control.ModifyFeature(layer);
            mapPanel.map.addControl(modifyControl);
            modifyControl.activate();

When I run the whole thing, it works, means the (single) selection option is 
visible in the toolbar, but when I select it, Firebug gives me the following 
error:

this.mapPanel is undefined
select(Object { name="combo"}, Object { name="record"})test4_...om.html (Zeile 
126)
DomHelper()ext-all.js (Zeile 7)
DomHelper()ext-all.js (Zeile 7)
swfobject(Object { name="a"}, Object { name="b"})ext-all.js (Zeile 11)
swfobject(Object { name="b"})ext-all.js (Zeile 11)
DomHelper()ext-all.js (Zeile 7)
DomHelper()ext-all.js (Zeile 7)
DomHelper(Object { name="c"})ext-all.js (Zeile 7)
I(Object { name="M"})ext-all.js (Zeile 7)
[Break on this error] listeners: {'s...ayers.Projection("EPSG:900913")));}, 
test4_...om.html (Zeile 126)

It points to the line with the 'listeners' in the Combo Box, but I have no real 
idea what this means or how I can fix this. Ideas / fixes (I think it is quite 
a simple problem for a trained developer (which I am not)) are highly 
appreciated. I also tried to examine the code from your example, but this did 
not bring me any further....

Kind regards,
Philippe




Hi Philippe,

I have put together some 
http://www.bryanmcbride.com/blog/geoexplorer_hacks_2 documentation  for
implementing similar "Quick Zooms" in GeoExplorer. GeoExplorer is a
component of the  http://opengeo.org/community/suite/ OpenGeo Suite , built
on OpenLayers and GeoExt. You can see the "Quick Zooms" in action 
http://www.opengeohost.com/geoexplorer/ here . Hopefully this will get you
going in the right direction!

BRYAN

-----
Bryan R. McBride, GISP
http://www.bryanmcbride.com bryanmcbride.com 
http://geoserving.net/ geoserving.net 
-- 
View this message in context: 
http://osgeo-org.1803224.n2.nabble.com/Define-several-states-of-view-Zoom-Area-tp5427671p5427774.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.
_______________________________________________
Users mailing list
Users@openlayers.org
http://openlayers.org/mailman/listinfo/users
_______________________________________________
Users mailing list
Users@openlayers.org
http://openlayers.org/mailman/listinfo/users

Reply via email to