Changeset 95

Show
Ignore:
Timestamp:
02/06/07 09:52:37 (2 years ago)
Author:
migurski
Message:

Modified provider switching to only repaint tiles when provider geometry does not change

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/as2/lib/com/modestmaps/core/TileGrid.as

    r94 r95  
    10251025    } 
    10261026     
     1027    public function repaintTiles():Void 
     1028    { 
     1029        var active:/*Tile*/Array = activeTiles(); 
     1030         
     1031        for(var i:Number = 0; i < active.length; i += 1) 
     1032            active[i].paint(mapProvider, active[i].coord); 
     1033    } 
     1034     
    10271035    private function redraw() 
    10281036    { 
  • trunk/as2/lib/com/modestmaps/geo/Map.as

    r94 r95  
    9292    public function setNewExtent(locations:/*Location*/Array):Void 
    9393    { 
     94        if(!locations) 
     95            return; 
     96     
    9497        var extent:Object = calculateMapExtent(locations); 
    9598        grid.resetTiles(Coordinate(extent['coord']), Point(extent['point'])); 
     
    163166    { 
    164167        var corners:/*Location*/Array = []; 
     168         
     169        if(!mapProvider) 
     170            return corners; 
    165171 
    166172        var TL:Coordinate = grid.topLeftCoordinate(); 
     
    202208    } 
    203209     
    204     public function setMapProvider(mapProviderType:Number):Void 
    205     { 
    206         this.mapProviderType = mapProviderType; 
    207         var mapProviderFactory:MapProviderFactory = MapProviderFactory.getInstance(); 
    208         mapProvider = MapProviderFactory.getInstance().getMapProvider(mapProviderType);  
     210    public function setMapProvider(providerType:Number):Void 
     211    { 
     212        var previousGeometry:String = mapProvider.geometry(); 
     213        var extent:/*Location*/Array = getCurrentExtent(); 
     214         
     215        mapProviderType = providerType; 
     216        mapProvider = MapProviderFactory.getInstance().getMapProvider(mapProviderType); 
    209217        grid.mapProvider = mapProvider; 
     218         
     219        if(mapProvider.geometry() == previousGeometry) { 
     220                grid.repaintTiles(); 
     221                 
     222        } else { 
     223                setNewExtent(extent); 
     224                 
     225        } 
    210226    } 
    211227     
  • trunk/as2/lib/com/modestmaps/mapproviders/AbstractMapProvider.as

    r75 r95  
    5858    * String signature of the current map provider's geometric behavior. 
    5959    */ 
    60         public function toString():String 
     60        public function geometry():String 
    6161        { 
    6262        return __projection.toString(); 
  • trunk/as2/lib/com/modestmaps/mapproviders/IMapProvider.as

    r75 r95  
    2424    */ 
    2525    public function outerLimits():/*Coordinate*/Array; 
     26 
     27   /* 
     28    * A string which describes the projection and transformation of a map provider. 
     29    */ 
     30    public function geometry():String; 
    2631} 
  • trunk/as2/lib/SampleClient.as

    r94 r95  
    5555    private static function showRoad() : Void 
    5656    { 
    57         var extent : /*Location*/Array = __map.getCurrentExtent(); 
    5857        __map.setMapProvider( MapProviders.MICROSOFT_ROAD ); 
    59         __map.setNewExtent( extent ); 
    6058    } 
    6159  
    6260    private static function showAerial() : Void 
    6361    { 
    64         var extent : /*Location*/Array = __map.getCurrentExtent(); 
    6562        __map.setMapProvider( MapProviders.MICROSOFT_AERIAL ); 
    66         __map.setNewExtent( extent ); 
    6763    } 
    6864  
    6965    private static function showHybrid() : Void 
    7066    { 
    71         var extent : /*Location*/Array = __map.getCurrentExtent(); 
    7267        __map.setMapProvider( MapProviders.MICROSOFT_HYBRID ); 
    73         __map.setNewExtent( extent ); 
    7468    } 
    7569