如何在Blogger中通过JSON获取位置信息?附现有JSON调用脚本
在Blogger中通过JSON获取位置信息的方法
你之前已经能用JSON脚本抓取带标签帖子的标题、缩略图和日期了,现在要获取位置信息其实不难,咱们来一步步改代码就行:
首先得知道,Blogger帖子的位置信息在JSON Feed里是存在georss$where字段里的,它的层级是:entry.georss$where.gml$Point.gml$pos.$t,这个字段的值是纬度 经度格式的字符串(比如39.9042 116.4074)。
修改你的现有脚本
你可以在原来的循环逻辑里,加入位置信息的提取代码,注意要先判断帖子是否设置了位置,避免报错。下面是修改后的完整示例:
<script type='text/javascript'> //<![CDATA[ var numposts = 5; // 你要显示的帖子数量 function labelthumbs(json) { document.write('<ul id="label_with_thumbs">'); for (var i = 0; i < numposts; i++) { if (i == json.feed.entry.length) break; var entry = json.feed.entry[i]; var posttitle = entry.title.$t; // 获取帖子链接 var posturl; for (var k = 0; k < entry.link.length; k++) { if (entry.link[k].rel == 'alternate') { posturl = entry.link[k].href; break; } } // 获取缩略图(保留你原来的逻辑) var postthumb = ""; if (entry.media$thumbnail) { postthumb = entry.media$thumbnail.url; } // 获取日期(保留你原来的逻辑) var postdate = entry.published.$t.substring(0, 10); // 👇 获取位置信息 var postLocation = "未设置位置"; if (entry.georss$where) { var posStr = entry.georss$where.gml$Point.gml$pos.$t; var [lat, lng] = posStr.split(" "); postLocation = `纬度: ${lat}, 经度: ${lng}`; } // 渲染帖子项 document.write(` <li> <img src="${postthumb}" alt="${posttitle}"> <h3><a href="${posturl}">${posttitle}</a></h3> <p>发布日期: ${postdate}</p> <p>位置: ${postLocation}</p> </li> `); } document.write('</ul>'); } //]]> </script> <!-- 调用Feed的脚本,替换成你的标签名 --> <script type='text/javascript' src='/feeds/posts/default/-/你的标签名?alt=json-in-script&callback=labelthumbs&max-results=5'></script>
关键细节说明
- 判断位置是否存在:不是所有帖子都设置了位置,所以必须用
if (entry.georss$where)先判断,不然没有位置的帖子会导致脚本报错。 - 经纬度分割:
gml$pos.$t返回的是空格分隔的字符串,用split(" ")可以把它拆分成单独的纬度和经度值,方便后续使用。 - Feed URL无需修改:你原来的Feed请求URL已经包含了位置信息,不需要额外添加参数。
如果想把经纬度转换成具体的地址名称,可以用前端地理编码的方法,但这部分需要调用第三方服务,这里就先聚焦在获取原始位置数据的实现上。
内容的提问来源于stack exchange,提问作者Ramez GaIal
相关产品推荐
相关产品推荐

