public void GotoFeature(Feature fet) { if (fet == null) { return; } //锁住的目的是为了避免在定位过程中系统进行地理坐标向投影坐标的转换 lock (fet) { ShapePoint pt = fet.Geometry.Centroid.Clone() as ShapePoint; if ((fet.Projected && fet.FeatureClass.OriginalCoordinateType == enumCoordinateType.Geographic) || fet.FeatureClass.OriginalCoordinateType == enumCoordinateType.Projection) { CoordinateTransfrom.PrjCoord2GeoCoord(new ShapePoint[] { pt }); } ShapePoint pt0 = pt.Clone() as ShapePoint; PanTo(pt); ReRender(delegate() { CoordinateTransfrom.GeoCoord2PrjCoord(new ShapePoint[] { pt0 }); _vectorMapRuntime.LocatingFocusLayer.Focus(pt, 6, 500); } ); } }
public void PanTo(ShapePoint geoCenterPoint) { if (geoCenterPoint == null) { return; } CoordinateTransfrom.GeoCoord2PrjCoord(new ShapePoint[] { geoCenterPoint });//geo to prj PointF oldCenter = new PointF(_viewport.Left + _viewport.Width / 2, _viewport.Top + _viewport.Height / 2); float offsetX = (float)(geoCenterPoint.X - oldCenter.X); float offsetY = (float)(-geoCenterPoint.Y - oldCenter.Y); _viewport.Offset(offsetX, offsetY); }