Files
win8phoneApp/CampusAppWP8/CampusAppWP8/Model/Campusmap/BuildingMapModel.cs
2013-10-08 18:15:53 +02:00

81 lines
2.8 KiB
C#

using CampusAppWP8.Model.GeoDb;
using CampusAppWP8.Resources;
using CampusAppWPortalLib8.Utility;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace CampusAppWP8.Model.Campusmap
{
public class BuildingMapModel : MapModel
{
public BuildingMapModel(string id)
{
SpsModel buildings = XmlManager.DeserializationFileToModel<SpsModel>(Constants.FileMap_BuildingsMap);
PlaceModel building = buildings.GetPlaceById(id);
if (buildings == null)
{
return;
}
this.ImageSource = building.GetInformationsValue("ImageSource");
double tmpVal;
if (double.TryParse(building.GetInformationsValue("ImageWidth"), NumberStyles.Number, CultureInfo.InvariantCulture, out tmpVal))
{
this.ImageWidth = tmpVal;
}
if (double.TryParse(building.GetInformationsValue("ImageHeight"), NumberStyles.Number, CultureInfo.InvariantCulture, out tmpVal))
{
this.ImageHeight = tmpVal;
}
if (double.TryParse(building.GetInformationsValue("MapImageOffsetX"), NumberStyles.Number, CultureInfo.InvariantCulture, out tmpVal))
{
this.MapImageOffsetX = tmpVal;
}
if (double.TryParse(building.GetInformationsValue("MapImageOffsetY"), NumberStyles.Number, CultureInfo.InvariantCulture, out tmpVal))
{
this.MapImageOffsetY = tmpVal;
}
string pointString = building.GetInformationsValue("MapRefPoint");
pointString = pointString.TrimStart("Point(".ToArray());
pointString = pointString.TrimEnd(')');
string[] coord = pointString.Split(' ');
if (coord == null || coord.Length != 2)
{
return;
}
double x;
double y;
if (!double.TryParse(coord[0], NumberStyles.Number, CultureInfo.InvariantCulture, out x) || !double.TryParse(coord[1], NumberStyles.Number, CultureInfo.InvariantCulture, out y))
{
return;
}
this.RefPoint = new Point(x,y);
if (double.TryParse(building.GetInformationsValue("ScaleX"), NumberStyles.Number, CultureInfo.InvariantCulture, out tmpVal))
{
this.ScaleX = tmpVal;
}
if (double.TryParse(building.GetInformationsValue("ScaleY"), NumberStyles.Number, CultureInfo.InvariantCulture, out tmpVal))
{
this.ScaleY = tmpVal;
}
this.GeoOffsetX = building.GeoRefPoint.Longitude;
this.GeoOffsetY = building.GeoRefPoint.Latitude;
}
}
}