/// <summary>
/// 移动到Geometry。
/// 对点的处理与其他类型不同
/// </summary>
/// <param name="mapControl"></param>
/// <param name="geometry"></param>
private void gotoGemetry(IMapControl2 mapControl, IGeometry geometry)
{
if (null == mapControl || null == geometry)
return;
IEnvelope envelope = geometry.Envelope;
// 检查GeometryType,点的处理与其他类型不同
if (geometry.GeometryType == esriGeometryType.esriGeometryPoint)
{
double xmax = envelope.XMax;
double xmin = envelope.XMin;
double ymax = envelope.YMax;
double ymin = envelope.YMin;
IEnvelope mapEnvelope = mapControl.Extent;
double dbParHeight = mapEnvelope.Height / 2;
double dbParWidth = mapEnvelope.Width / 2;
envelope.YMax = (ymax + dbParHeight);
envelope.YMin = (ymin - dbParHeight);
envelope.XMax = (xmax + dbParWidth);
envelope.XMin = (xmin - dbParWidth);
}
else
{
envelope.Expand(2, 2, true);
}
mapControl.Extent = envelope;
/*
* 如果后续的动作是闪烁geometry,必须加入下列语句,否则是先闪烁,后移动地图。
*/
Application.DoEvents();
}
将Geometry移动到屏幕中心