private void DrawObject_DrawComplete(object sender, DrawEventArgs e) { if (this.DrawWidget == this.GetType()) { string viewURL = ""; MapPoint point = e.Geometry as MapPoint; AddLocationGraphic(point); if (GeometryTool.IsGeographicSR(this.MapSRWKID)) { viewURL = GetViewContentURL(point.X, point.Y); OpenSteetViewWindow(viewURL); } if (GeometryTool.IsWebMercatorSR(this.MapSRWKID)) { point = point.WebMercatorToGeographic(); viewURL = GetViewContentURL(point.X, point.Y); OpenSteetViewWindow(viewURL); } else { if (geoService == null) { geoService = new GeometryService(this.AppConfig.GeometryService); geoService.ProjectCompleted += new EventHandler <GraphicsEventArgs>(GeometryService_ProjectCompleted); } geoService.ProjectAsync(this.GraphicsLayer.Graphics, new SpatialReference(2446)); } } }
/// <summary> /// Convert extent to Envelope between Mercator(102100) and Geographic(4326) spatial references /// If it is other spatial reference, use GeometryTool to project the envelope /// </summary> /// <param name="outSRWKID"></param> public Envelope ToEnvelope(int outSRWKID) { Envelope envelope = null; if (GeometryTool.IsWebMercatorSR(outSRWKID) && GeometryTool.IsGeographicSR(this.spatialReference)) { MapPoint mPoint1 = new MapPoint(this.xmin, this.ymin, new SpatialReference(4326)); MapPoint mPoint2 = new MapPoint(this.xmax, this.ymax, new SpatialReference(4326)); envelope = new Envelope(mPoint1.GeographicToWebMercator(), mPoint2.GeographicToWebMercator()); } else if (GeometryTool.IsWebMercatorSR(this.spatialReference) && GeometryTool.IsGeographicSR(outSRWKID)) { MapPoint mPoint1 = new MapPoint(this.xmin, this.ymin, new SpatialReference(this.spatialReference)); MapPoint mPoint2 = new MapPoint(this.xmax, this.ymax, new SpatialReference(this.spatialReference)); envelope = new Envelope(mPoint1.WebMercatorToGeographic(), mPoint2.WebMercatorToGeographic()); } else if (this.spatialReference == outSRWKID) { envelope = ToEnvelope(); } return(envelope); }