como obter os dados geográficos do geo-rss via API de feed do Google Ajax
-
28-09-2020 - |
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 ..
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);