Google Maps 学习笔记(二)地图天气预报服务 2014.06.04

地图天气预报服务:一,获取天气预报信息;二,解析天气预报信息;三,在地图上加载天气预报信息;

Yahoo!提供的天气预报服务采用流行的RSS输出结果,接口地址如下:

http://weather.yahooapis.com/forecstrss?p={location}&u={unit}

location:地点ID或美国邮编 // 地点ID是形如"USCA1116"的字符串

地区ID可以到http://weather.yahoo.com/进行查询

unit:天气信息的显示单位。  c(公制)和f(英制)

详细RSS文档内容:https://developer.yahoo.com/weather/

RSS文档是一种XML文档。

/*

AJAX跨域获取数据安全行问题,客户端的Javascript无法直接加在此RSS文档,必须在服务器中转一次。

同时,文档中节点含有命名空间,xmlnode.getElementsByTagNameNS() // ie不支持?

*/

GoogleAJAXFeedAPI  主页:http://code.google.com/apis/ajaxfeeds

GoogleAJAXFeedAPI 支持多种Feed格式

GoogleAJAXFeedAPI 中支持的XML的命名空间,其全局方法为 google.feeds.getElementByTagNameNS()

google.feeds.getElementByTagNameNS(node,ns,localName)//node:需要查找的根节点      ns:命名空间的 URI      localName:本地名称

返回值为NodeList类型,为一组符合条件的XML节点。

Feed()对象 位于 google.feeds 命名空间,三个方法:load()、setNumEntries()和setResultFormat()

(1)因为加载Feed属于异步调用,所以需要Feed.load()加入回调函数对返回数据进行处理  Feed.load(callbackFunction)

调用时可以传递result参数,result参数的类型由Feed.setResultFormat()决定

(2)Feed.setNumEntries(num)//用于设定返回的Feed中所含的项目数   num为加载Feed后, result参数中包含的项目数

(3)Feed.setResultFormat(format)   用于设定返回的数据格式

google.feeds.Feed.JSON_FORMAT、google.feeds.Feed.XML_FORMAT、google.feeds.Feed.MIXED_FORMAT ( 混合格式的数据 )

 

完成处理Feed函数后,google.setOnLoadCallback() 函数设定为回调函数了。

创建YWeather类(方便重用):

 

//Url模板

var feedUrlTemplate = "http:\/\/image.weather.yahoo.com\/web\/common\/wxicons\/31\/{code}.gif";

//天气RSS路径的模板

var feedUrlTemplate = "http:\/\/weather.yahoo.com\/forecastrss?p={id}&u={unit}";

 

function YWeather(){};

YWeather.prototype.loadWeather = function(id,unit){

  if(!id) return;//如果id为空

  this.id = id;

  this.unit = unit?unit:"c";

  var url = feedUrlTemplate.replace("{id}",this.id).replace("{unit}",this.unit);//生成真实的RSS的URL

  //加载 RSS并设定其回调函数为this.process,即YWeather.process

  this.feed = new google.feeds.Feed(url);

  this.feed.setResultFormat(google.feeds.Feed.XML_FORMAT);

  this.feed.load(this.process);

  

}

 

 

 

 

你可能感兴趣的:(google map)