0

这是我的代码,其中包含来自 google maps rss 的 geo- rss

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Google AJAX Feed API - Simple Example</title>
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">

    google.load("feeds", "1");

    function initialize() {
      var feed = new google.feeds.Feed("http://maps.google.com/maps/ms?ie=UTF8&hl=zh-CN&vps=1&jsv=259e&msa=0&output=georss&msid=109685068115364659392.00048b5b630141d82b83a");

      feed.load(function(result) {
       console.log(result.feed)

      });

    }
    google.setOnLoadCallback(initialize);

    </script>
  </head>
  <body>
    <div id="feed"></div>
  </body>
</html>

而且我在萤火虫上找不到地理数据,

所以我该怎么做 ..

谢谢

更新:

我想获得的地理数据(在geo-rss中)是这样的:

<georss:point>
      39.965015 116.362381
    </georss:point>

<gml:LineString>

      <gml:posList>
        39.992191 116.417938
        39.968254 116.466698
        39.939568 116.451591
        39.959045 116.411079
      </gml:posList>
    </gml:LineString>

这无法使用 google ajax api。

所以我该怎么做 ..

4

2 回答 2

1

您需要加载 XML 提要而不是 JSON 提要,才能按原样获取原始 XML 提要。使用 JSON 提要,它会删除除标准RSS 和 Atom 标记之外的所有标记,然后转换为 JSON。

将结果格式设置为 XML 为

var feed = new google.feeds.Feed("...");
feed.setResultFormat(google.feeds.Feed.XML_FORMAT);

这是一个修改后的加载函数,用于打印 XML 命名空间元素,例如georss:pointgml:LineString

feed.load(function(result) {
    var georssNS = "http://www.georss.org/georss";
    var gmlNS = "http://www.opengis.net/gml";
    var items = result.xmlDocument.getElementsByTagName("item");

    for(var i = 0; i < items.length; i++) {
        // get <georss:point>
        var georss = google.feeds.getElementsByTagNameNS(items[i], georssNS, "point")[0];
        if(georss) {
            console.log(georss)
        }
        // get <gml:LineString>
        var lineString = google.feeds.getElementsByTagNameNS(items[i], gmlNS, "LineString")[0];
        if(lineString) {
            console.log(lineString);
        }
    }
});
于 2010-07-24T16:33:12.737 回答
0

来自 Google AJAX API Code Playground 中的一个示例

http://code.google.com/apis/ajax/playground/?exp=feeds#load_feed

/*
*  How to load a feed via the Feeds API.
*/

google.load("feeds", "1");

// Our callback function, for when a feed is loaded.
function feedLoaded(result) {
  if (!result.error) {
    // Grab the container we will put the results into
    var container = document.getElementById("content");
    container.innerHTML = '';

    // Loop through the feeds, putting the titles onto the page.
    // Check out the result object for a list of properties returned in each entry.
    // http://code.google.com/apis/ajaxfeeds/documentation/reference.html#JSON
    for (var i = 0; i < result.feed.entries.length; i++) {
      var entry = result.feed.entries[i];
      var div = document.createElement("div");
      div.appendChild(document.createTextNode(entry.title));
      container.appendChild(div);
    }
  }
}

function OnLoad() {
  // Create a feed instance that will grab Digg's feed.
  var feed = new google.feeds.Feed("http://maps.google.com/maps/ms?ie=UTF8&hl=zh-CN&vps=1&jsv=259e&msa=0&output=georss&msid=109685068115364659392.00048b5b630141d82b83a");

  // Calling load sends the request off.  It requires a callback function.
  feed.load(feedLoaded);
}

google.setOnLoadCallback(OnLoad);
于 2010-07-24T09:12:31.153 回答