好的我正在使用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>
以前没有真正使用过网络技术,我们将不胜感激。
答案 0 :(得分: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的飞镖包装器)中做了类似的技巧,你可以查看相关的代码here。