package tripvisModel.controllers { import flash.events.EventDispatcher; import mx.collections.ArrayCollection; import tripvisModel.MapViewport; import tripvisModel.SimpleTripItem; [Event(name="tripItemAdded", type="tripvisModel.controllers.MapControllerEvent")] [Event(name="tripItemsCleared", type="tripvisModel.controllers.MapControllerEvent")] [Event(name="tripItemRemoved", type="tripvisModel.controllers.MapControllerEvent")] public class MapController extends EventDispatcher { private var _mapTripItems: ArrayCollection = new ArrayCollection(); public function MapController() { } public function addTripItem(tripItem: SimpleTripItem): void { _mapTripItems.addItem(tripItem); dispatchEvent(new MapControllerEvent('tripItemAdded', tripItem)); } public function clearTripItems(): void { _mapTripItems.removeAll(); dispatchEvent(new MapControllerEvent('tripItemsCleared')); } public function removeTripItem(tripItem: SimpleTripItem): void { _mapTripItems.removeItemAt( _mapTripItems.getItemIndex(tripItem) ); dispatchEvent(new MapControllerEvent('tripItemRemoved', tripItem)); } public function contains(simpleTripItem: SimpleTripItem): Boolean { return _mapTripItems.contains(simpleTripItem); } public function clearInvisibleTripItems(mapViewport: MapViewport): void { for each( var simpleTripItem: SimpleTripItem in _mapTripItems) { if (! mapViewport.latLngBounds.containsLatLng( simpleTripItem.location.getLatLng() ) ) { this.removeTripItem( simpleTripItem ); } } } } }