0

私の Wire Cloud マッシュアップでは、2 つの異なるマップを使用したいと考えています。各マップは異なるオペレーターからデータを取得し、各オペレーターは ORION Context Broker の異なるインスタンスを参照します。

この 2 つのオペレーターと 2 つのマップを別のワークスペースに配置すると、このコンポーネントは正常に動作します。このすべてのコンポーネントを同じマッシュアップと同じタブに配置すると、正常に動作します。この 2 つのケースでは、私は Context Broker からデータを受け取り、オペレーターはこのデータをマップに合わせて送信し、これはデータを完全に表しています。

私の問題は、これらの演算子とマップを同じマッシュアップに入れても、それぞれ別のタブに入れると発生します。この場合、常に次のエラーが発生します。

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

このケースを修正しようと何時間も試みた後、この 3 番目のケースでこのマップと演算子が機能しない理由がわかりません。同じ状況にある人はいますか? あなたの場合、どのソリューションが機能しましたか?

ありがとう

PD: Google マップ API を使用している私のマップの場合

4

1 に答える 1

0

FI-LAB ストアで入手できる「Map Viewer」ウィジェットを使用していないことを前提としています。

この問題は、マップ ウィジェットが着信イベントを処理する方法に関連しているようです。次のことを考慮してください。

  • ウィジェットが配置されているタブが表示されたとき、または最初のイベントが入力エンドポイントのいずれかに到着したときに、ウィジェットが読み込まれます。
  • アンロードされたウィジェット/オペレーターの入力エンドポイントに到着したイベントは、そのウィジェット/オペレーターが完全にロードされるまでキューに入れられます
  • WireCloud は、iframe の「ロード」イベントをキャプチャすることにより、ウィジェット/オペレーターが完全にロードされていることを前提としています。

通常、Google Map API は非同期でロードされるため、API の準備が整うまで (ロード イベントのしばらく後)、ウィジェットはこれらの受信イベントを管理できません。

現在、実行可能な唯一の解決策は、load イベントの後、Google マップ API が読み込まれる前に「notiCAM」エンドポイントに到着するイベントをバッファリングし、その API が準備が整ったことを通知したときにイベントを処理することです。

于 2014-08-12T11:44:41.597 に答える