Pergunta

este é o meu código que possui geo-rss do google maps rsrs:

<!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>

e não consigo encontrar os dados geográficos no firebug,

então, o que eu deveria fazer ..

obrigado

Atualizada:

os dados geográficos (no geo-rss) que desejo obter são assim:

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

e

<gml:LineString>

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

isso não pode ser feito usando a API do Google Ajax.

então, o que eu deveria fazer ..

Foi útil?

Solução

Você precisa carregar o feed XML em vez do feed JSON para poder obter o feed XML bruto como está.Com o feed JSON, ele remove todos mas as tags RSS e Atom padrão e depois traduz para JSON.

Defina o formato do resultado para XML como

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

Aqui está uma função de carregamento modificada para imprimir elementos XML com namespace, como georss:point e 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);
        }
    }
});

Outras dicas

De um exemplo no Google AJAX API Code Playground que funciona

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top