Map Widgets从不同的Context Brokers和工作区选项卡接收数据

时间:2014-08-12 09:38:20

标签: fiware-orion fiware-wirecloud

在我的Wire Cloud mashup中,我想使用两个不同的映射,每个映射从不同的运算符获取数据,每个运算符查询ORION上下文代理的不同实例。

当我将这两个运算符和两个映射放在不同的工作空间中时,这些组件工作正常。如果我将所有这些组件放在同一个mashup和相同的选项卡中,也可以正常工作。在这两种情况下,我从上下文代理接收数据,操作员发送适用于地图的数据,这个数据完美地表示数据。

当我将这些运算符和映射放在同一个mashup中但每个都在不同的选项卡中时,我的问题就出现了。在这种情况下,我总是会得到以下错误:

Exception catched while processing an event that reached the "notiCAM" input endpoint       fdcae15cbdc8.js:775
log                 fdcae15cbdc8.js:775
propagate           fdcae15cbdc8.js:853
_notifyLoaded       fdcae15cbdc8.js:744

经过几个小时试图修复此案例后,我无法找到为什么这个地图和运算符在第三种情况下不起作用,是否有人处于同样的情况?哪种解决方案适用于您的情况?

感谢

P.D:我的地图使用谷歌地图API

1 个答案:

答案 0 :(得分:0)

我假设您没有使用FI-LAB商店提供的“地图查看器”小部件。

问题似乎与地图窗口小部件处理传入事件的方式有关。考虑到:

  • 小部件在显示它们所在的选项卡时或第一个事件到达任何输入端点时加载
  • 到达卸载的小部件/操作员的输入端点的任何事件都会排队,直到该小部件/操作符完全加载
  • WireCloud假设小部件/运算符通过捕获其iframe的“load”事件来完全加载

Google Map API通常是异步加载的,这使得您的窗口小部件无法管理这些传入事件,直到该API准备就绪(加载事件发生后一段时间)。

目前,唯一可行的解​​决方案是在加载事件之后但在谷歌地图api加载之前缓冲到达“notiCAM”端点的事件,并在api通知您已准备就绪时处理它们。