Esri Silverlight控制从代码中平移/缩放

时间:2014-10-20 22:58:32

标签: silverlight esri

在调用ZoomToResolutionPanTo时,我无法正常使地图行为正常 我需要能够放大特定的坐标和中心地图。

我实现它的唯一方法是删除动画:

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);

这似乎有效,但随后鼠标互动变得疯狂"鼠标滚动会使地图跳转并缩放到随机位置。

有解决方案吗?

1 个答案:

答案 0 :(得分:2)

问题是第二个操作取代了前一个操作。在开始下一个之前,您必须等待一个完成。但这可能无法达到您想要的效果。 而是缩放到一定程度,您将获得所需的行为。如果您没有范围但只有中心和分辨率,则可以使用以下内容创建一个:

var zoomToExtent = new Envelope(point.X - resolution * MapControl.ActualWidth / 2,point.Y,point.X + resolution * MapControl.ActualWidth / 2,point.Y);

在您的代码中,您称之为解决方案" ZoomLevel",这有点令人困惑。我假设这是一个地图分辨率,而不是一个等级数对吗? esri地图控件不处理特定于服务的级别,但是对数据的级别是不可知的,并且每个像素使用更通用的单位""分辨率值。