3

好的,我正在 dart 中制作一个程序,该程序获取用户位置,然后反向地理位置(openmapsapi),然后显示具有特定城市名称的新闻(google news api)

我为 openmap api 添加使用以下代码并在本地存储中获取城市。从那里我想为谷歌新闻api使用类似的代码,但它可能会引发错误,可能无法添加两个window.on.data行。部分代码取自Seth Ladd的博客,我有点不知道一切是如何工作的.

    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>

以前没有真正研究过网络技术,任何帮助将不胜感激。

4

1 回答 1

3

您应该只有一个window.on.message.add因为所有消息处理程序都会从​​ JavaScript 接收所有消息,这可能会导致并发问题。而是确保 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 回答