MapView Extent-Change

4490
5
跳到解决方案
2016-05-09 02:36
PaulYoum1
通过
新贡献者II

在Javascript API 4.0中,如果我正在制作2D地图,我相信我将通过MapView与地图进行交互。我不禁注意到MapView的事件非常简单,只有4个支持的事件。如果我想拥有像3.16中那样的“extent-change”映射事件,在4.0中是否有不同的进程来挂钩这个事件?或者这是将来要添加的功能?

标签(1)
0荣誉
1解决方案

接受的解决方案
ReneRubalcava
通过
经常贡献者II

实际上,现在在4.0中这样做要容易得多,因为您不需要知道要侦听的事件字符串。你想知道什么时候视图。范围变化,所以你可以这样做:

视图。watch("extent", function(newValue, oldValue) {});

就是这样。

你可以在这里的文档中看到更多。使用属性| JavaScript 4.0的ArcGIS API

我已经写了很多关于Accessor的文章,它是这一切的动力,在这里

在原帖子中查看解决方案

5回复
ReneRubalcava
通过
经常贡献者II

实际上,现在在4.0中这样做要容易得多,因为您不需要知道要侦听的事件字符串。你想知道什么时候视图。范围变化,所以你可以这样做:

视图。watch("extent", function(newValue, oldValue) {});

就是这样。

你可以在这里的文档中看到更多。使用属性| JavaScript 4.0的ArcGIS API

我已经写了很多关于Accessor的文章,它是这一切的动力,在这里

SteveCole
通过
频繁的贡献者

如果你愿意呢取消你正在“听”的事件是什么?例如,防止放大/缩小超过一定水平或范围等。

0荣誉
ReneRubalcava
通过
经常贡献者II

watch方法返回一个名为WatchHandle的对象,该对象具有remove()方法,因此您可以停止侦听属性更改。

访问器| API参考| JavaScript 4.0的ArcGIS API

防止放大/缩小超出范围的东西是分开的。你会想要查看视图的约束来定义那些。MapView | API参考| ArcGIS API for JavaScript 4.0

SteveCole
通过
频繁的贡献者

范围的例子是我能想到的最能说明这个观点的例子。还有一些类似于终止apply edit命令(我知道,它还没有在版本4中)。与我所问的不同,听起来访问器针对的是您希望发生的“事件”,不是吗?

0荣誉
ReneRubalcava
通过
经常贡献者II

这将是一个异步任务。

观察财产变化并不一定能取代事件。API中仍然有事件,但观察属性变化能让你更具体地了解你关心的对象可能发生的变化。

听起来,您希望能够取消QueryTask或applyEdits或类似的东西。在这种情况下,我们实际上没有适当的机制来取消任务。这是我们可以看到的东西,但是一旦请求在飞行中,我们最多只能忽略结果,这并不意味着请求没有通过服务,你的编辑不适用。一旦请求到达服务器,我们就无法取消它了。