| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-ux-GMapPanel'>/**
 
- </span> * @class Ext.ux.GMapPanel
 
-  * @extends Ext.Panel
 
-  * @author Shea Frederick
 
-  */
 
- Ext.define('Ext.ux.GMapPanel', {
 
-     extend: 'Ext.panel.Panel',
 
-     
 
-     alias: 'widget.gmappanel',
 
-     
 
-     requires: ['Ext.window.MessageBox'],
 
-     
 
-     initComponent : function(){
 
-         Ext.applyIf(this,{
 
-             plain: true,
 
-             gmapType: 'map',
 
-             border: false
 
-         });
 
-         
 
-         this.callParent();        
 
-     },
 
-     
 
-     afterFirstLayout : function(){
 
-         var center = this.center;
 
-         this.callParent();       
 
-         
 
-         if (center) {
 
-             if (center.geoCodeAddr) {
 
-                 this.lookupCode(center.geoCodeAddr, center.marker);
 
-             } else {
 
-                 this.createMap(center);
 
-             }
 
-         } else {
 
-             Ext.Error.raise('center is required');
 
-         }
 
-               
 
-     },
 
-     
 
-     createMap: function(center, marker) {
 
-         options = Ext.apply({}, this.mapOptions);
 
-         options = Ext.applyIf(options, {
 
-             zoom: 14,
 
-             center: center,
 
-             mapTypeId: google.maps.MapTypeId.HYBRID
 
-         });
 
-         this.gmap = new google.maps.Map(this.body.dom, options);
 
-         if (marker) {
 
-             this.addMarker(Ext.applyIf(marker, {
 
-                 position: center
 
-             }));
 
-         }
 
-         
 
-         Ext.each(this.markers, this.addMarker, this);
 
-     },
 
-     
 
-     addMarker: function(marker) {
 
-         marker = Ext.apply({
 
-             map: this.gmap
 
-         }, marker);
 
-         
 
-         if (!marker.position) {
 
-             marker.position = new google.maps.LatLng(marker.lat, marker.lng);
 
-         }
 
-         var o =  new google.maps.Marker(marker);
 
-         Ext.Object.each(marker.listeners, function(name, fn){
 
-             google.maps.event.addListener(o, name, fn);    
 
-         });
 
-         return o;
 
-     },
 
-     
 
-     lookupCode : function(addr, marker) {
 
-         this.geocoder = new google.maps.Geocoder();
 
-         this.geocoder.geocode({
 
-             address: addr
 
-         }, Ext.Function.bind(this.onLookupComplete, this, [marker], true));
 
-     },
 
-     
 
-     onLookupComplete: function(data, response, marker){
 
-         if (response != 'OK') {
 
-             Ext.MessageBox.alert('Error', 'An error occured: "' + response + '"');
 
-             return;
 
-         }
 
-         this.createMap(data[0].geometry.location, marker);
 
-     },
 
-     
 
-     afterComponentLayout : function(w, h){
 
-         this.callParent(arguments);
 
-         this.redraw();
 
-     },
 
-     
 
-     redraw: function(){
 
-         var map = this.gmap;
 
-         if (map) {
 
-             google.maps.event.trigger(map, 'resize');
 
-         }
 
-     }
 
-  
 
- });
 
- </pre>
 
- </body>
 
- </html>
 
 
  |