网站源码下载PR查询短网址
首页编程数据库网页图形冲浪邮件下载浏览器QQ系统办公软件站长安全手机邮件认证组网通信


网站首页 -> 网络编程 -> ASP实例
ASP利用prototype和Google的weather api做天气预报

发表日期:2009-7-3


利用PRototype和GOOGLE的weather api做天气预报
想拿prototype练练手,就用prototype做个天气预报吧。
Google Weather API 只支持美国地区使用邮政编码进行查询,例如:
http://www.google.com/ig/api?hl=zh-cn&weather=94043
(94043 为 山景城, 美国加州 的邮政编码)
而除了美国以外的地区需要使用经纬度坐标作为参数才能执行 Google Weather API, 例如:
http://www.google.com/ig/api?hl=zh-cn&weather=,,,30670000,104019996
(30670000,104019996 为 成都, 中国大陆 的经纬度坐标)
要其它地区的经纬度坐标,可以通过 Google API 提供的国家代码列表及相应的城市经纬度坐标列表可以查询到,以下是 Google API 提供的查询参数:
http://www.google.com/ig/countries?output=xml&hl=zh-cn
ASP演示:http://www.knowsky.com/tools/tianqiyubao.asp
(查询 Google 所支持的所有国家的代码,并以 zh-cn 简体中文显示)
http://www.google.com/ig/cities?output=xml&hl=zh-cn&country=cn

:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
</head>
<script language="javascript" src="prototype.js"></script>
<script language="Javascript">

//取得中国所有的城市
function getCity()
{
var url = "http://www.google.com/ig/cities";
var cityPara = {method:"get" ,
     parameters:"output=xml&hl=zh-cn&country=cn" ,
     onComplete:showCityRespose
     };
var cityRequest = new Ajax.Request( url , cityPara);
}

function showCityRespose(originalRequest)
{
cityInfo = originalRequest.responseXML;
cityNodes = cityInfo.getElementsByTagName("city");
for(var i=0;i<cityNodes.length;i++){
  var city = cityNodes[i];
  var cityName = getData( city , "name");
  var latitude = getData( city ,"latitude_e6");
  var longitude= getData( city ,"longitude_e6");
  var option =document.createElement("option");
  $("city").options.add(option);
  option.innerText = cityName;
  option.value=",,,"+latitude+","+longitude;
}
}
function forecast(city)
{
$("result").innerHTML = "请稍等";
var url = "http://www.google.com/ig/api";
var para = {method:"get" ,
  parameters:"hl=zh-cn&weather="+city ,
  onComplete:showResult
};
var forecastRequest = new Ajax.Request(url , para);
}

//显示预报结果
function showResult(originalRequest)
{
$("result").innerHTML = "";
resultXML = originalRequest.responseXML;
forecastNodes = resultXML.getElementsByTagName("forecast_conditions");
for(i=0;i<forecastNodes.length;i++){
  var oneNode = forecastNodes[i];
  var weekday = getData( oneNode , "day_of_week");
  var low = getData( oneNode , "low");
  var high = getData( oneNode , "high");
  var icon = getData( oneNode , "icon");
  var result = document.createElement("div");
  result.appendChild(document.createTextNode(weekday));
  result.appendChild(document.createElement("br"));
  result.appendChild(document.createTextNode("最低温度"+low));
  result.appendChild(document.createElement("br"));
  result.appendChild(document.createTextNode("最高温度"+high));
  result.appendChild(document.createElement("br"));
  var image = document.createElement("img");
  image.setAttribute("src" , "http://www.google.com"+icon);
  result.appendChild(image);
  $("result").appendChild(result);
}
}

//取得数据值
function getData(parentNode , nodeName)
{
return parentNode.getElementsByTagName(nodeName)[0].getAttribute("data");
}
</script>
<body onLoad="getCity()">
<div id="selectcity">
<form name="form1" method="post" action="">
<select name="city" id="city" onChange="forecast(this.value)">
        <option value="">选择城市</option>
     </select>   
  </form>
</div>

<div id="result">

</div>
</body>
</html>

ASP演示:http://www.knowsky.com/tools/tianqiyubao.asp
注意这段代码在IE下可以使用,在IE里XMLHTTPREQUEST可以选择允许跨域。
在FF下,就不能使用了:(
解决办法:你可以先用PHP读下来GOOGLE提供的数据,再用XML形式提供给这个程序,就可以啦。

上一篇:ASP常用函数:getpy() 汉字转为拼音 人气:4182
下一篇:asp版域名查询的数据库接口 人气:3656
网站文章搜索
邮件订阅服务
输入你的邮件地址,你将不会错过任何关于<ASP实例教程>的内容
今日更新文章
·Office 2010宝典 word之(10)巧用书法字帖
·Office 2010宝典 word之(9)快速更改文档
·Office 2010宝典 word之(8)让艺术字为您
·Office 2010宝典 word之(7)通过主题快速
·Office 2010宝典 word之(6)快速插入文档
·Office 2010宝典 word之(5)您手边的工具
·Office 2010宝典 word之(4)多语言翻译
·Office 2010宝典 word之(3)可以朗读的屏
·Office 2010宝典 word之(2)利用文档导航
·Office 2010宝典 word之(1)利用文档导航
·微软:Silverlight在HTML5时代有竞争力
·LG TB200:不买你就输了!
本栏目推荐文章
·在J2ME编程中使用 Nokia 的中文模拟器
·ASP值多少钱,还能值钱多久。
·Hibernate的一对一关系(转)
·Java入门:Java语言中Timer类的简洁用法
·RuntimeException的特殊情况
·选择Java接口还是抽象类
·ASP中时间函数的使用(一)
·用SQL实现分布式数据复制
·关于Hibernate开发框架中的各个包文件解
·谈谈PHP语法(2)
·解决目前web开发的页面程序
·如何让JBuilder运行在JDK1.4之上
Copyright © 2000-2010 www.Devdao.com All rights reserved | 沪ICP备05001343号 sitemap