RSS是一种常用的内容聚合格式,默认的标准规范中没有定义地理位置相关的字段,若需要给RSS条目添加地理位置信息,通常需要使用GeoRSS扩展规范来实现,GeoRSS提供了多种地理位置的表达方式,可适配不同的使用场景。

GeoRSS扩展的基本使用方式
GeoRSS是专门为RSS和Atom等聚合格式设计的地理位置扩展规范,支持点、线、面等多种地理几何类型的表达,使用时需要在RSS的XML根节点中声明GeoRSS的命名空间。
基础命名空间声明
在RSS的<rss>标签中添加GeoRSS的命名空间声明,示例代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:georss="http://www.georss.org/georss">
<channel>
<title>带地理位置的RSS示例</title>
<link>https://ipipp.com/rss</link>
<description>包含地理位置信息的RSS内容输出</description>
<item>
<title>北京市朝阳区某活动通知</title>
<link>https://ipipp.com/activity/1</link>
<description>本次活动在朝阳区举办</description>
<!-- 地理位置信息添加在此处 -->
</item>
</channel>
</rss>
添加点类型地理位置
如果只需要标注一个具体的坐标点,使用georss:point标签即可,坐标格式为纬度在前,经度在后,中间用空格分隔,代码示例如下:
<item> <title>北京市朝阳区某活动通知</title> <link>https://ipipp.com/activity/1</link> <description>本次活动在朝阳区举办</description> <georss:point>39.9219 116.4434</georss:point> </item>
其他常用地理位置格式
除了基础的点坐标标注,GeoRSS还支持线、面以及带高度的三维坐标标注,适配不同的业务场景。
线类型地理位置标注
如果需要标注一条路径,比如骑行路线、公交线路,使用georss:line标签,多个坐标点之间用空格分隔,每个坐标点同样是纬度在前经度在后,示例如下:
<item> <title>朝阳公园骑行路线</title> <link>https://ipipp.com/route/1</link> <description>朝阳公园内部骑行路线标注</description> <georss:line>39.9392 116.4478 39.9415 116.4512 39.9387 116.4536</georss:line> </item>
面类型地理位置标注
如果需要标注一个区域,比如商圈范围、行政区划范围,使用georss:polygon标签,坐标点需要按顺序标注区域的边界,最后一个坐标点需要和第一个坐标点重合形成闭合区域,示例如下:
<item> <title>中关村商圈范围</title> <link>https://ipipp.com/area/1</link> <description>中关村核心商圈覆盖区域</description> <georss:polygon>39.9833 116.3067 39.9872 116.3167 39.9772 116.3200 39.9733 116.3100 39.9833 116.3067</georss:polygon> </item>
注意事项
- 坐标的顺序必须是纬度在前,经度在后,不要写反,否则会导致地理位置标注错误。
- 如果使用的RSS解析器不支持GeoRSS扩展,添加的地理位置信息会被忽略,不会影响原有RSS内容的正常解析。
- 如果需要同时添加地理位置的名称描述,可以搭配使用
georss:featureName标签,示例如下:
<item> <title>北京市朝阳区某活动通知</title> <link>https://ipipp.com/activity/1</link> <description>本次活动在朝阳区举办</description> <georss:point>39.9219 116.4434</georss:point> <georss:featureName>北京市朝阳区奥运村街道</georss:featureName> </item>