3

ユーザーの場所を取得し、地理的な場所を逆にして(openmapsapi)、特定の都市名(google news api)でニュースを表示するプログラムをdartで作成しています

openmap api に次のコードを使用して、ローカル ストレージに都市を取得します。そこから、Google ニュース API に同様のコードを使用したいのですが、おそらく 2 つの window.on.data 行を追加できないというエラーがスローされます。 .

    window.on.message.add(locReceived);
    Element script = new Element.tag("script");
    var somelat=window.localStorage.$dom_getItem("LAT");
    var somelng=window.localStorage.$dom_getItem("LNG");
    var someurl="http://nominatim.openstreetmap.org/reverse?  format=json&lat="+somelat+"&lon="+somelng+"&addressdetails=1&json_callback=callbackForMapsApi";
    script.src=someurl;
    document.body.elements.add(script);

これは私が使用している関連するhtmlコードです

      <script type="text/javascript">
function callbackForJsonpApi(s) {
    window.postMessage(JSON.stringify(s), '*');
}

function callbackForMapsApi(s) {
    window.postMessage(JSON.stringify(s), '*');
}
</script>

以前は Web テクノロジに実際に取り組んだことがありませんでしたが、助けていただければ幸いです。

4

1 に答える 1

3

すべてのメッセージ ハンドラーが JavaScript からすべてのメッセージを受け取るため、window.on.message.addは 1 つだけにする必要があります。これにより、同時実行の問題が発生する可能性があります。代わりに、JavaScript コードが送信するメッセージにターゲット ヘッダーを追加するようにします。

function callbackForJsonpApi(s) {
    s.target = "dartJsonHandler"
    window.postMessage(JSON.stringify(s), '*');
}

function callbackForMapsApi(s) {
    s.target = "dartMapsHandler";
    window.postMessage(JSON.stringify(s), '*');
}

次に、Dart コードでこのターゲット ヘッダーをオンにします。DartGap (PhoneGap の dart ラッパー) で同様のトリックを行っています。関連するコードはこちらでご覧いただけます

于 2012-04-22T17:14:30.247 に答える