/* * Ext Map Window * Copyright(c) 2008, David Davis * */ /** * @author David Davis */ Ext.namespace('Ext.ux'); Ext.ux.GMapWindow = Ext.extend(Ext.Window, { initComponent: function() { this.mapPanel = new Ext.ux.GMapPanel({ xtype: 'gmappanel', region: 'center', zoomLevel: this.zoomLevel || 12, gmapType: this.gmapType || 'map', mapConfOpts: this.mapConfOpts || [ 'enableScrollWheelZoom', 'enableDoubleClickZoom', 'enableDragging' ], mapControls: this.mapControls || ['GSmallMapControl'], mapTypes: this.mapTypes || [G_NORMAL_MAP,G_SATELLITE_MAP,G_HYBRID_MAP,G_PHYSICAL_MAP], setCenter: this.setCenter || { geoCodeAddr: 'USA', marker: {title: 'USA'} }, markers: this.markers || [] }); this.mapMenu = new Ext.menu.Menu({ id: 'mainmenu', items: [], listeners: { beforeshow: this.buildTypeMenu.createDelegate(this), itemclick: this.onItemCheck.createDelegate(this) } }); var defConfig = { layout: 'fit', title: 'Google Map', maximizable: true, width: 400, height: 400, minheight: 140, minwidth: 200, items: [ this.mapPanel ], /* tbar: new Ext.Toolbar({ items: [{ text: 'Type', menu: this.mapMenu }] }),*/ bbar: new Ext.StatusBar({ defaultText: '', id: 'statusbar', items: [{ text: 'View', menu: this.mapMenu }, ' ', ' '] }) }; Ext.applyIf(this,defConfig); Ext.ux.GMapWindow.superclass.initComponent.call(this); }, buildTypeMenu: function() { var map = this.mapPanel.getMap(); var t = map.getMapTypes(); this.mapMenu.removeAll(); var curType = map.getCurrentMapType(); for ( var i = 0, len = t.length; i < len; i++ ) { var name = t[i].getName(); this.mapMenu.addMenuItem({ text: name, checked: ( ( t[i] == curType ) ? true : false ), group: 'maptype' }); } /* { text: 'Street View', checked: false, group: 'street', disabled: true, checkHandler: this.onItemCheck.createDelegate(this) } */ }, onItemCheck: function(item, checked) { if ( checked ) { var map = this.mapPanel.getMap(); var t = map.getMapTypes(); for ( var i = 0, len = t.length; i < len; i++ ) if ( t[i].getName() == item.text ) map.setMapType(t[i]); } } }); Ext.reg('gmapwindow',Ext.ux.GMapWindow);