RSS

GeoRSS : Geocoded RSS Basics
Map annotations are specified in the RSS XML format. RSS is a widely supported format for syndication of news and weblogs, and is extendable to publish any sort of itemized data. Publishing geographic annotations in RSS has several advantages: there are a large number of tools available to write RSS, and other services, besides worldKit, can make use of the geographic metadata. Most important for the basics, RSS is a simple format and easy to edit by hand.

worldKit supports three flavors of RSS: RSS 2.0, Atom, and RSS 1.0. Geographic data is assigned to RSS <item>'s by additional tags in the georss namespace. Also, worldKit accepts geoannotations within certain standard RSS tags, for users of hosted services that prohibit adding new tags to RSS.

An example RSS 2.0 file is included with the worldKit package.

<?xml version="1.0"?>
<rss version="2.0" xmlns:georss="http://www.georss.org/georss">
<channel>

...

<item>
 <title>An example annotation</title>
 <link>http://example.com/geo</link>
 <description>Just an example</description>
 <georss:point>26.58 -97.83</georss:point>
</item>

...

</channel> </rss>
Within the <channel>, there are multiple <item>'s each specifying an annotation. The <title> and <description> are displayed in the annotation's textbox, and the <link> is loaded on mouse clicks. The point is plotted at the latitude/longitude specified by <georss:point>.

Important: The georss namespace must be specified in the root <rss> tag, so make sure to add the "xmlns:georss" attribute.

Both GeoRSS Simple and GeoRSS GML are supported. And though the georss namespace is recommended, worldKit is permissive and supports all known varieties: <geo:lat>, <geo:long> (W3C Geo), <icbm:lat>, <icbm:latitude>, <geourl:latitude>, <icbm:lon>, <icbm:longitude>, <geo:lon>, <geourl:longitude>. Also accepted is a <geo:Point> element, with <geo:lat> and <geo:long> child elements.

Geocoding Without Additional Tags
If there is no access to the structure of the RSS feed (for example, services like TypePad and Blogger), it is possible to geocode within existing RSS items. By default, this feature is not enabled; the configuration option <locfield> is described below.

To specify a location, simply type geo:lat= and geo:long=, followed by the value, within a tag. For example,

<?xml version="1.0"?>
<rss version="2.0">
<channel>

...

<item>
 <title>An example annotation</title>
 <link>http://example.com/geo</link>
 <description>Just an example. geo:lat=26.58 geo:long=-97.83</description>
</item>

...

</channel> </rss>
Tags supported are <description> in RSS 1.0 and 2.0, <summary> & <content> in Atom, <category> in RSS 2.0, and <dc:subject> in RSS 1.0 and Atom. worldKit expects to find the geotags in the field specified by the <locfield> config option. Its value is the name of the tag containing the annotations; or the value "any", which will have worldKit search through any of the four fields above.

Additional information on using this method in practice is in Typepad and Blogger.

There are some drawbacks to this method. This is not strictly "correct" usage of a namespace. The annotations show up as plain text (though this may be desired by some) or interfer with other functions (<category> sometimes has specific uses in weblog software). Still, on the whole, it is a useful compromise.

Configuring RSS for worldKit

There are a few configuration options (in config.xml) associated with retrieving the RSS feed. Multiple feeds can be specified for dataurl and/or updateurl. Use a new element for each additional feed. This can be useful if your GeoRSS comes from multiple sources, or you wish to cut the size of your data into more "digestable" chunks.
Geocoding
These are a few suggestions for web sites to determine latitude and longitude for an annotation. It's also possible to use worldKit for geocoding. See Annotation Input.
Images and Icons
Images can also be displayed at an annotation, instead of text . Add a <media:content> to any <item>, with the "url" attribute set to the url of an image.
<media:content url="http://farm1.static.flickr.com/102/309709211_2d1e8ad3ac_o.jpg"/>
The annotation itself can be a small image, rather than a shape. This can be specified for an individual item with <media:thumbnail>.
<media:thumbnail url="meal.png"/>
You must specify the "media" namespace by addng xmlns:media="http://search.yahoo.com/mrss/" to the root rss node.

<photo:thumbnail> used to be the recommended format for sepcifying images. It's still supported, but the media namespace is recommended to be inline with current web practices. Make sure you have the most recent version of worldKit.

International (Itrntinliztin)
worldKit (and the Flash Player generally) can display any characters encoded in "UTF-8". This covers everything from Swedish to Chinese toCyrillic.

To display annotations in international characters sets, make sure that the RSS file is saved in the UTF-8 encoding. Many text editors support UTF-8: Notepad on Windows, BBEdit on Mac, vim on unix. Also most software development packages will have support for writing UTF-8 files.

Ids
For certain advanced features (like the Javascript API), it is useful to assign known identifiers to RSS items. You can assign a unique id to a RSS 1.0 item with <dc:identifier>, a RSS 2.0 item with <guid> and an Atom entry with <id>.

If you don't assign an item an id, worldKit generates an internal identifier. This is perfectly fine generally, so don't worry about id's unless you have to.

Flavors
Here's an example of geocoding in RSS 1.0.
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:georss="http://www.georss.org/georss#" xmlns="http://purl.org/rss/1.0/">

...

<item rdf:about="http://example.com/geo">
 <title>An example annotation</title>
 <link>http://example.com/geo</link>
 <description>Just an example</description>
 <georss:point>26.58 -97.83</georss:point>
</item>

...

</rdf:RDF>
Here's an example of geocoding in Atom.
<?xml version="1.0"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:georss="http://www.georss.org/georss">

...

<entry>
 <title>An example annoation</title>
 <link href="http://example.com/geo"/>
 <summary>Just an example</summary>
 <georss:point>-26.58<-97.83/georss:point>
</entry>

...

</feed>
Here's an example of geocoding within <dc:subject> tags.
<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>

...

<item>
 <title>An example annotation</title>
 <link>http://example.com/geo</link>
 <description>Just an example</description>
 <dc:subject>geo:lat=26.58 geo:long=-97.83</dc:subject>
</item>

...

</channel> </rss>