MapModel.cs CampusAppWP8::Model::Campusmap::MapModel CampusAppWP8::Model::Campusmap System::Windows::Controls System::Windows::Input System::Windows::Media::Imaging //----------------------------------------------------------------------- //<copyrightfile="MapModel.cs"company="BTU/IIT"> //Companycopyrighttag. //</copyright> //<author>stubbfel</author> //<sience>24.06.2013</sience> //---------------------------------------------------------------------- namespaceCampusAppWP8.Model.Campusmap { usingSystem; usingSystem.Collections.Generic; usingSystem.Windows; usingSystem.Windows.Controls; usingSystem.Windows.Input; usingSystem.Windows.Media.Imaging; usingCampusAppWP8.Model.GeoDb; publicclassMapModel { #regionConstructors publicMapModel() { this.IsReady=false; } publicMapModel(List<PlaceModel>placeList) { this.IsReady=false; this.LoadSpatials(placeList); this.IsReady=true; } #endregion #regionEvents publicdelegatevoidMapInfos(List<PlaceModel>places); publiceventMapInfosShowMapInfos=null; #endregion #regionProperty publicboolIsReady{get;protectedset;} publicstringImageSource{get;set;} publicdoubleImageWidth{get;set;} publicdoubleImageHeight{get;set;} publicdoubleMapImageOffsetX{get;set;} publicdoubleMapImageOffsetY{get;set;} publicdoubleGeoOffsetX{get;set;} publicdoubleGeoOffsetY{get;set;} publicdoubleScaleX{get;set;} publicdoubleScaleY{get;set;} publicPointRefPoint{get;set;} publicSpsModelSpatial{get;set;} #endregion #regionMethods #regionpublic publicPointGetScrollPoint(Pointpoint) { returnthis.GetScrollPoint(point.X,point.Y); } publicPointGetScrollPoint(doublex,doubley) { x=this.RefPoint.X+this.MapImageOffsetX+x; y=this.RefPoint.Y+this.MapImageOffsetY-y; returnnewPoint(x,y); } publicImageAddPin(doublex,doubley,MapPinModel.PinTypetype,List<PlaceModel>places=null) { Pointposition=newPoint(x,y); returnthis.AddPin(position,type,places); } publicImageAddPinFromRefPoint(doublex,doubley,MapPinModel.PinTypetype,List<PlaceModel>places=null) { Pointposition=newPoint(this.RefPoint.X+x,this.RefPoint.Y-y); returnthis.AddPin(position,type,places); } publicImageAddPinFromRefPoint(Pointposition,MapPinModel.PinTypetype,List<PlaceModel>places=null) { returnthis.AddPinFromRefPoint(position.X,position.Y,type,places); } publicImageAddPin(Pointposition,MapPinModel.PinTypetype,List<PlaceModel>places=null) { ImagepinImg=newImage(); MapPinModelpin=this.CreatePin(type,places,pinImg); pin.Position=position; if(pin.ImageSource!=null) { pinImg.Source=newBitmapImage(newUri(pin.ImageSource,UriKind.Relative)); pinImg.Width=pin.ImageWidth; pinImg.Height=pin.ImageHeight; } Canvas.SetTop(pinImg,pin.Position.Y); Canvas.SetLeft(pinImg,pin.Position.X); Canvas.SetZIndex(pinImg,pin.ZIndex); returnpinImg; } publicPointConverToPixelPoint(doublex,doubley) { Pointp=newPoint{X=this.ScaleX*x,Y=this.ScaleY*y}; returnp; } publicPointConverToPixelPoint(Pointpoint) { returnthis.ConverToPixelPoint(point.X,point.Y); } publicPointConverToMapPoint(doublex,doubley) { returnnewPoint{X=x-this.GeoOffsetX,Y=y-this.GeoOffsetY}; } publicPointConverToMapPoint(Pointpoint) { returnthis.ConverToMapPoint(point.X,point.Y); } #endregion #regionprotected protectedvirtualvoidLoadSpatials(List<PlaceModel>placeList) { this.Spatial=newSpsModel(); this.Spatial.AddPlaces(placeList); } #endregion #regionprivate privateMapPinModelCreatePin(MapPinModel.PinTypetype,List<PlaceModel>places,ImagepinImg) { MapPinModelpin; switch(type) { caseMapPinModel.PinType.CurrentPosition: pin=newCurrentPositionPinModel(); break; caseMapPinModel.PinType.SearchPlace: pin=newSearchPlacePinModel(); pinImg.MouseLeftButtonDown+=newMouseButtonEventHandler(((SearchPlacePinModel)pin).ShowInfo); ((SearchPlacePinModel)pin).AssocPlaces=places; ((SearchPlacePinModel)pin).CallBack=this.ShowMapInfos; break; caseMapPinModel.PinType.InfoPlace: pin=newInfoPlacePinModel(); pinImg.MouseLeftButtonDown+=newMouseButtonEventHandler(((InfoPlacePinModel)pin).ShowInfo); ((InfoPlacePinModel)pin).AssocPlaces=places; ((InfoPlacePinModel)pin).CallBack=this.ShowMapInfos; break; caseMapPinModel.PinType.InfoLabPlace: pin=newInfoLabPlacePinModel(); pinImg.MouseLeftButtonDown+=newMouseButtonEventHandler(((InfoLabPlacePinModel)pin).ShowInfo); ((InfoLabPlacePinModel)pin).AssocPlaces=places; ((InfoLabPlacePinModel)pin).CallBack=this.ShowMapInfos; break; caseMapPinModel.PinType.InfoAccesPlace: pin=newInfoPlaceAccessPinModel(); pinImg.MouseLeftButtonDown+=newMouseButtonEventHandler(((InfoPlaceAccessPinModel)pin).ShowInfo); ((InfoPlaceAccessPinModel)pin).AssocPlaces=places; ((InfoPlaceAccessPinModel)pin).CallBack=this.ShowMapInfos; break; caseMapPinModel.PinType.InfoRedPlace: pin=newInfoPlaceRedPinModel(); pinImg.MouseLeftButtonDown+=newMouseButtonEventHandler(((InfoPlaceRedPinModel)pin).ShowInfo); ((InfoPlaceRedPinModel)pin).AssocPlaces=places; ((InfoPlaceRedPinModel)pin).CallBack=this.ShowMapInfos; break; caseMapPinModel.PinType.InfoWcPlace: pin=newInfoPlaceWCPinModel(); pinImg.MouseLeftButtonDown+=newMouseButtonEventHandler(((InfoPlaceWCPinModel)pin).ShowInfo); ((InfoPlaceWCPinModel)pin).AssocPlaces=places; ((InfoPlaceWCPinModel)pin).CallBack=this.ShowMapInfos; break; default: pin=newHiddenPinPlaceModel(); break; } pinImg.Tag=pin.Tag; returnpin; } #endregion #endregion } }