//add polygon to map private void addPolygon(PointLatLng point, double radius, Dot2CertValidRegion region) { if (polygon != null) //기존 polygon이 이미 있으면 { polList.Clear(); overlay.Polygons.Remove(polygon); //polygon 없앰 } else { polList = new List <PointLatLng>(); } switch (region.region_type) { case Dot2GeogarphicRegionType.kDot2GeogarphicRegionType_Circular: addCirclePolList(point, radius); break; case Dot2GeogarphicRegionType.kDot2GeogarphicRegionType_Polygonal: addPolyPolList(region); break; case Dot2GeogarphicRegionType.kDot2GeogarphicRegionType_RectangularSet: break; case Dot2GeogarphicRegionType.kDot2GeogarphicRegionType_Identified: break; } }
private void mapLoadByCert(Dot2CertValidRegion region) { if (region.present == false) { return; } PointLatLng point; switch (region.region_type) { case Dot2GeogarphicRegionType.kDot2GeogarphicRegionType_Circular: { double latitude = (double)region.circular.center.lat / 10000000; double longitude = (double)region.circular.center.lon / 10000000; point = new PointLatLng(latitude, longitude); //(y,x) setMap(point); addMarker(point); addPolygon(point, ((double)region.circular.radius / 88400), region); //0.01-약 885.9m //0.1-약 8.84km //1-약 88km map.Overlays.Add(overlay); map.Zoom++; map.Zoom--; } break; case Dot2GeogarphicRegionType.kDot2GeogarphicRegionType_RectangularSet: { } break; case Dot2GeogarphicRegionType.kDot2GeogarphicRegionType_Polygonal: { point = new PointLatLng(region.polygonal.point_lat[0], region.polygonal.point_lon[0]); overlay.Markers.Remove(marker); marker = null; setMap(point); addPolygon(point, 0, region); map.Overlays.Add(overlay); } break; case Dot2GeogarphicRegionType.kDot2GeogarphicRegionType_Identified: { if (polygon != null) //map에 있는 polygon, marker 없애기 { polList.Clear(); overlay.Polygons.Remove(polygon); polygon = null; overlay.Markers.Remove(marker); marker = null; } } break; case Dot2GeogarphicRegionType.kDot2GeogarphicRegionType_Unknown: break; } }
//다각형 그리기 private void addPolyPolList(Dot2CertValidRegion region) { for (int i = 0; i < region.polygonal.point_num; i++) { PointLatLng point = new PointLatLng(region.polygonal.point_lat[i], region.polygonal.point_lon[i]); polList.Add(point); } //polygon 생성하고 등록 polygon = new GMapPolygon(polList, "polList"); polygon.Stroke = new Pen(Color.Blue, 1); polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.LightSkyBlue)); overlay.Polygons.Add(polygon); }
private void PrintDot2CertValidRegion(Dot2CertValidRegion region) { this.gridView[0, 3].Value = "유효 지역"; this.gridView[1, 3].Value = ""; if (region.present == false) { return; } switch (region.region_type) { case Dot2GeogarphicRegionType.kDot2GeogarphicRegionType_Circular: { Dot2CircularRegion c = region.circular; this.gridView[0, 3].Value += "(circular)"; this.gridView[1, 3].Value = "-center lat: " + c.center.lat + Environment.NewLine + "-center lon: " + c.center.lon + Environment.NewLine + "-radius: " + c.radius + "m"; } break; case Dot2GeogarphicRegionType.kDot2GeogarphicRegionType_RectangularSet: { Dot2RectangularRegionSet set = region.rectangular; this.gridView[0, 3].Value += "(rectangular)"; this.gridView[1, 3].Value = "-region num: " + set.region_num + Environment.NewLine; for (int i = 0; i < set.region_num; i++) { this.gridView[1, 3].Value += "Region[" + i + "] notrh/west lat: " + set.north_west_lat[i] + ", lon: " + set.north_west_lon[i] + ", south/east lat: " + set.south_east_lat + ", lon: " + set.south_east_lon; if (i != set.region_num - 1) { this.gridView[1, 3].Value += Environment.NewLine; } } } break; case Dot2GeogarphicRegionType.kDot2GeogarphicRegionType_Polygonal: { Dot2PolygoanlRegion p = region.polygonal; this.gridView[0, 3].Value += "(polygonal)"; this.gridView[1, 3].Value = "-point num: " + p.point_num + Environment.NewLine; for (int i = 0; i < p.point_num; i++) { this.gridView[1, 3].Value += "Point[" + i + "] lat: " + p.point_lat[i] + ", lon: " + p.point_lon[i]; if (i != p.point_num - 1) { this.gridView[1, 3].Value += Environment.NewLine; } } } break; case Dot2GeogarphicRegionType.kDot2GeogarphicRegionType_Identified: { Dot2IdentifiedRegionSet set = region.identified; this.gridView[0, 3].Value += "(identified)"; this.gridView[1, 3].Value = "-num :" + set.num + Environment.NewLine; for (int i = 0; i < set.num; i++) { this.gridView[1, 3].Value += "Region[" + i + "] - Type: " + set.type[i].ToString().Substring(26, set.type[i].ToString().Length - 26) + ", Country: " + set.country[i]; if (i != set.num - 1) { this.gridView[1, 3].Value += Environment.NewLine; } } } break; case Dot2GeogarphicRegionType.kDot2GeogarphicRegionType_Unknown: this.gridView[0, 3].Value += "(unknown)"; break; default: break; } }