0

これはグーグルマップ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>

これは、googleajaxapiを使用して取得することはできません。

だから私は何をすべきか..

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);

georss:pointこれは、や などのXML名前空間要素を出力するように変更されたロード関数gml: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

動作するGoogleAJAXAPIコードプレイグラウンドの例から

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 に答える