开发者

how to get the geo data from geo-rss via google ajax feed api

开发者 https://www.devze.com 2023-01-08 21:53 出处:网络
this is my code that has geo-rss from google maps rss: <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">

this is my code that has geo-rss from google maps 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);开发者_如何学Go

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

and i can't find the geo data on the firebug ,

so what should i do ..

thanks

updated:

the geo data(in the geo-rss) i want to get is like this:

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

and

<gml:LineString>

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

this can not get using the google ajax api .

so what should i do ..


You need to load the XML feed instead of the JSON feed to be able to get the raw XML feed as it is. With the JSON feed, it removes all but the standard RSS and Atom tags and then translates to JSON.

Set the result format to XML as

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

Here is a modified load function to print XML namespaced elements such as georss:point and 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);
        }
    }
});


From an example in the Google AJAX API Code Playground that works

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

精彩评论

暂无评论...
验证码 换一张
取 消