在调用ZoomToResolution
和PanTo
时,我无法正常使地图行为正常
我需要能够放大特定的坐标和中心地图。
我实现它的唯一方法是删除动画:
this.MapControl.ZoomDuration = new TimeSpan(0);
this.MapControl.PanDuration = new TimeSpan(0);
否则,如果我这样打电话:
control.MapControl.ZoomToResolution(ZoomLevel);
control.MapControl.PanTo(MapPoint());
它做一个或另一个(即平移或缩放,但不是两者)。如果(在动画之后)我第二次调用此代码(地图已经缩放或平移到所需位置/级别) - 它会执行第二部分。
试过这个:
control.MapControl.ZoomToResolution(ZoomLevel, MapPoint());
同样的问题,在内部调用上面的命令
所以,我现在唯一的解决方法就是将缩放/平移持续时间设置为0.这会在使用鼠标时造成不良用户体验。
我也试过这样的事情:
this.MapControl.ZoomDuration = new TimeSpan(0);
this.MapControl.PanDuration = new TimeSpan(0);
control.MapControl.ZoomToResolution(ZoomLevel);
control.MapControl.PanTo(MapPoint());
this.MapControl.ZoomDuration = new TimeSpan(750);
this.MapControl.PanDuration = new TimeSpan(750);
这似乎有效,但随后鼠标互动变得疯狂"鼠标滚动会使地图跳转并缩放到随机位置。
有解决方案吗?
答案 0 :(得分:2)
问题是第二个操作取代了前一个操作。在开始下一个之前,您必须等待一个完成。但这可能无法达到您想要的效果。 而是缩放到一定程度,您将获得所需的行为。如果您没有范围但只有中心和分辨率,则可以使用以下内容创建一个:
var zoomToExtent = new Envelope(point.X - resolution * MapControl.ActualWidth / 2,point.Y,point.X + resolution * MapControl.ActualWidth / 2,point.Y);
在您的代码中,您称之为解决方案" ZoomLevel",这有点令人困惑。我假设这是一个地图分辨率,而不是一个等级数对吗? esri地图控件不处理特定于服务的级别,但是对数据的级别是不可知的,并且每个像素使用更通用的单位""分辨率值。