public object Clone() { AreaInfo ainfo = new AreaInfo(base.Mission, base.ID, base.Name, _Property); ainfo._Points = new Dictionary <int, PointLatLng>(_Points); ainfo._Polygon = _Polygon; return(ainfo); }
public int FindPolygon(GMapPolygon polygon) { foreach (int ID in Polygons.Keys) { AreaInfo ainfo = Polygons[ID]; if (polygon == ainfo.Polygon) { return(ID); } } return(-1); }
public void AddPolygon(List <PointLatLng> Points, string Name, int Property) { AreaInfo ainfo; int mission_id, polygon_id; if (DataSettings.UseDatabase) { mission_id = Mission.GetMissionId(); MySqlConnection conn = DataSettings.GetConnection(); using (MySqlCommand cmd = new MySqlCommand(null, conn)) { cmd.CommandText = "INSERT INTO polygon_info (area_name, area_property, mission_id) " + "VALUES (@name, @property, @mission_id); SELECT LAST_INSERT_ID();"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("name", Name); cmd.Parameters.AddWithValue("property", Property); cmd.Parameters.AddWithValue("mission_id", mission_id); polygon_id = Convert.ToInt32(cmd.ExecuteScalar()); Dictionary <int, PointLatLng> points = new Dictionary <int, PointLatLng>(); foreach (PointLatLng point in Points) { cmd.CommandText = "INSERT INTO polygon_point (point_lat, point_lng, area_id) " + "VALUES (@lat, @lng, @area_id); SELECT LAST_INSERT_ID();"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("lat", point.Lat); cmd.Parameters.AddWithValue("lng", point.Lng); cmd.Parameters.AddWithValue("area_id", polygon_id); int point_id = Convert.ToInt32(cmd.ExecuteScalar()); points.Add(point_id, point); } ainfo = new AreaInfo(mission_id, polygon_id, Name, Property); ainfo.SetPoints(points); ainfo.Polygon = CreatePolygon(Name, Points, Property); Polygons.Add(polygon_id, ainfo); } } else { mission_id = 0; polygon_id = simID++; ainfo = new AreaInfo(mission_id, polygon_id, Name, Property); Dictionary <int, PointLatLng> points = new Dictionary <int, PointLatLng>(); for (int i = 0; i < Points.Count; i++) { points.Add(i, Points[i]); } ainfo.SetPoints(points); ainfo.Polygon = CreatePolygon(Name, Points, Property); Polygons.Add(polygon_id, ainfo); } }
public void EditPolygonPoints(int ID, List <PointLatLng> Points) { if (Polygons.ContainsKey(ID)) { List <PointLatLng> np = new List <PointLatLng>(Points); AdjustPoints(np); AreaInfo ainfo = Polygons[ID]; if (DataSettings.UseDatabase) { MySqlConnection conn = DataSettings.GetConnection(); using (MySqlCommand cmd = new MySqlCommand(null, conn)) { Dictionary <int, PointLatLng> points = new Dictionary <int, PointLatLng>(); Dictionary <int, PointLatLng> op = ainfo.Points; foreach (int point_id in op.Keys) { cmd.CommandText = "DELETE FROM polygon_point WHERE point_id = @id"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("id", point_id); cmd.ExecuteNonQuery(); } foreach (PointLatLng point in Points) { cmd.CommandText = "INSERT INTO polygon_point (point_lat, point_lng, area_id) " + "VALUES (@lat, @lng, @area_id); SELECT LAST_INSERT_ID();"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("lat", point.Lat); cmd.Parameters.AddWithValue("lng", point.Lng); cmd.Parameters.AddWithValue("area_id", ID); int point_id = Convert.ToInt32(cmd.ExecuteScalar()); points.Add(point_id, point); } ainfo.SetPoints(points); ainfo.Polygon = CreatePolygon(ainfo.Name, Points, ainfo.Property); } } else { Dictionary <int, PointLatLng> points = new Dictionary <int, PointLatLng>(); for (int i = 0; i < Points.Count; i++) { points.Add(i, Points[i]); } ainfo.SetPoints(points); ainfo.Polygon = CreatePolygon(ainfo.Name, Points, ainfo.Property); } } }
public void LoadJson(string json) { Clear(); MPWrapper wrapper = JsonConvert.DeserializeObject <MPWrapper>(json); this.Markers = new Dictionary <int, SymbolInfo>(wrapper.Markers); this.Polygons = new Dictionary <int, AreaInfo>(wrapper.Polygons); foreach (int id in Markers.Keys) { SymbolInfo sinfo = Markers[id]; sinfo.Marker = MarkSymbol(sinfo.ImgID, sinfo.Name, sinfo.Point, sinfo.ID); } foreach (int id in Polygons.Keys) { AreaInfo ainfo = Polygons[id]; ainfo.Polygon = CreatePolygon(ainfo.Name, ainfo.GetPoints(), ainfo.Property); } }
public void RemovePolygon(int ID) { if (Polygons.ContainsKey(ID)) { AreaInfo ainfo = Polygons[ID]; GMapOverlay overlay = Main.GetOverlay("polygons"); overlay.Markers.Remove((GmapMarkerWithLabel)ainfo.Polygon.Tag); overlay.Polygons.Remove(ainfo.Polygon); Polygons.Remove(ID); if (DataSettings.UseDatabase) { MySqlConnection conn = DataSettings.GetConnection(); using (MySqlCommand cmd = new MySqlCommand(null, conn)) { cmd.CommandText = "DELETE FROM polygon_info WHERE area_id = @id"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("id", ID); cmd.ExecuteNonQuery(); } } } }