1

私はJavaオブジェクトを持っており、その中に「Well-knowntext」の文字列によって定義された空間形状が存在します。GWT UIでこのオブジェクトにマウスオーバーすると、コードはこの文字列をJSNIを介してJavascriptに渡します。これにより、一連の解析が実行され、適切なBingMapsAPIシェイプが作成されます。

この単純化された例は、各状態が状態名とその周囲を定義する文字列を含むオブジェクトとして存在するマップアプリケーションです。UIで状態名をマウスオーバーすると、境界文字列が解析され、代表的な形状がマップ上に描画されます。

そのため、現在、私のコードは、ユーザーがオブジェクトの上にマウスを置くたびに、受け渡し、解析、および作成を行います。文字列を解析してオブジェクトを1回だけ作成する方法を探しています。できれば、作成済みの完全なJavascriptオブジェクト(Bing Mapsシェイプ)を元のJavaオブジェクト自体に保存します。これは確かに物事をスピードアップするはずだと思います-ユーザーがマウスを別のアイテムに移動するたびに、いくつかの非常に詳細なマップオブジェクトを解析して作成する必要がある場合、UIは遅く見え始めます。

この種のJavascriptオブジェクトをJavaオブジェクトに保存し、必要なときにいつでもJavascriptに戻すことはできますか?

私のJavaコード(GWT)では、JavascriptObjectを作成できますが、Microsoft.Maps.Polygonオブジェクトのようなものを保持するにはこれで十分ですか?

ありがとう!

4

2 に答える 2

1

クラスにフィールドを作成したり、JavaScriptObjectJS からのオブジェクトを格納するタイプの変数を作成したりすることができます。

GWT はすでにいくつかの場所でそれを行っていますcom.google.gwt.xml.client.impl.DOMItem

于 2011-09-24T22:24:43.270 に答える
1

それらをJavaScriptでキャッシュしないのはなぜですか?Javascript でオブジェクトを作成したら、文字列をキーとしてキャッシュ オブジェクトに格納します。次に、新しいオブジェクトのリクエストを受け取るたびに、キャッシュをチェックし、事前に作成されたものがある場合はそれを使用します。事前に作成されたものがない場合は、作成してキャッシュに追加します。

多数のオブジェクトを事前に作成する場合は、キャッシュに事前入力する一連の文字列を使用して javascript を呼び出すだけで Java を使用できます。これにより、すべての Javascript オブジェクトがフェンスの Javascript 側に保持され、すべての Java オブジェクトがフェンスのサイトに保持されますが、それでもパフォーマンスは向上します。

これは、疑似コードの一般的な考え方です。

var cache = {};

function createJSObject(stringArgument) {
    if (stringArgument in cache) {
        return(cache[stringArgument]);
    }
    var obj;

    // create the object here
    // ...

    // cache the object we created
    cache[stringArgument] = obj;
    return(obj);
}
于 2011-09-24T19:11:41.983 に答える