Changeset 135

Show
Ignore:
Timestamp:
02/27/07 00:17:33 (2 years ago)
Author:
migurski
Message:

Added events for when markers enter or leave the map

Files:

Legend:

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

    r124 r135  
    7575        //grid.log('Marker '+markerId+' in '+tileKey); 
    7676    } 
     77 
     78   /** 
     79    * Fetch a single marker by ID. 
     80    */ 
     81    public function getMarker(id:String):Marker 
     82    { 
     83        return markers[id]; 
     84    } 
     85 
    7786   /** 
    7887    * Fetch a list of markers within currently-visible tiles. 
  • trunk/as2/lib/com/modestmaps/core/TileGrid.as

    r131 r135  
     1import com.modestmaps.geo.Map; 
    12import com.modestmaps.geo.Location; 
    23import com.modestmaps.core.Coordinate; 
     
    1314class com.modestmaps.core.TileGrid extends MovieClip 
    1415{ 
     16    private var map:Map; 
     17 
    1518    private var width:Number; 
    1619    private var height:Number; 
     
    936939        for(var id:String in newOverlappingMarkers) { 
    937940            if(newOverlappingMarkers[id] && !__overlappingMarkers[id]) { 
    938                 /* 
    939                 TODO: 
    940                 Throw an event here indicating that newOverlappingMarkers[id] 
    941                 now overlaps the tile grid, and should be tracked externally. 
    942                 */ 
     941                map.onMarkerEnters(markers.getMarker(id)); 
    943942                __overlappingMarkers[id] = true; 
    944943            } 
     
    947946        for(var id:String in __overlappingMarkers) { 
    948947            if(!newOverlappingMarkers[id] && __overlappingMarkers[id]) { 
    949                 /* 
    950                 TODO: 
    951                 Throw an event here indicating that newOverlappingMarkers[id] 
    952                 no longer overlaps the tile grid, and should be ignored. 
    953                 */ 
     948                map.onMarkerLeaves(markers.getMarker(id)); 
    954949                delete __overlappingMarkers[id]; 
    955950            } 
  • trunk/as2/lib/com/modestmaps/geo/Map.as

    r132 r135  
    11import mx.utils.Delegate; 
     2import mx.events.EventDispatcher; 
    23import com.stamen.twisted.Reactor; 
    34import com.stamen.twisted.DelayedCall; 
     
    56import com.modestmaps.geo.Location; 
    67import com.modestmaps.core.Point; 
     8import com.modestmaps.core.Marker; 
    79import com.modestmaps.core.TileGrid; 
    810import com.modestmaps.core.Coordinate; 
     
    3032    public var mapProvider:IMapProvider; 
    3133 
     34    // stubs for EventDispatcher 
     35    public var dispatchEvent:Function; 
     36    public var addEventListener:Function; 
     37    public var removeEventListener:Function; 
     38 
     39    public static var EVENT_MARKER_ENTERS:String = 'Marker enters'; 
     40    public static var EVENT_MARKER_LEAVES:String = 'Marker leaves'; 
     41 
    3242    public static var symbolName:String = '__Packages.com.modestmaps.geo.Map'; 
    3343    public static var symbolOwner:Function = Map; 
     
    3646    public function Map() 
    3747    { 
     48        EventDispatcher.initialize(this); 
     49 
    3850        __zoomSteps = []; 
    3951 
     
    4254        var initObj : Object =  
    4355        { 
     56            map: this, 
    4457                mapProvider: mapProvider,  
    4558                _x: 0,  
     
    5063        }; 
    5164                 
    52         grid = TileGrid(attachMovie(TileGrid.symbolName, 'grid', getNextHighestDepth(), initObj )); 
     65        grid = TileGrid(attachMovie(TileGrid.symbolName, 'grid', getNextHighestDepth(), initObj)); 
    5366 
    5467        var extent:/*Location*/Array = [new Location(80, -180), 
     
    288301        grid.putMarker(name, mapProvider.locationCoordinate(location), location); 
    289302    } 
     303     
     304    public function onMarkerEnters(marker:Marker):Void 
     305    { 
     306        //grid.log('+ '+marker.toString()); 
     307        dispatchEvent({target: this, type: EVENT_MARKER_ENTERS, marker: marker}); 
     308    } 
     309     
     310    public function onMarkerLeaves(marker:Marker):Void 
     311    { 
     312        //grid.log('- '+marker.toString()); 
     313        dispatchEvent({target: this, type: EVENT_MARKER_LEAVES, marker: marker}); 
     314    } 
    290315} 
  • trunk/as2/lib/SampleClient.as

    r132 r135  
    3333         
    3434        __map.setInitialExtent(extent); 
     35         
     36        __map.addEventListener(Map.EVENT_MARKER_ENTERS, onMarkerEnters); 
     37        __map.addEventListener(Map.EVENT_MARKER_LEAVES, onMarkerLeaves); 
    3538         
    3639        __map.putMarker('Rochdale', new Location(37.865571, -122.259679)); 
     
    149152        } 
    150153     
     154    private static function onMarkerEnters(event:Object):Void 
     155    { 
     156        __map.grid.log('+ '+event.marker.toString()+' =)'); 
     157    } 
     158     
     159    private static function onMarkerLeaves(event:Object):Void 
     160    { 
     161        __map.grid.log('- '+event.marker.toString()+' =('); 
     162    } 
    151163}