SPL Documentation | KML Examples | Screenshots
1. To put a map like this on your site, first get one of the simple examples on the Google Maps API website running.
2. Create a KML document with the spacecraft you wish to show, the following are examples. To get a better understanding of KML see the KML Documentation.
3. Based on this example: http://code.google.com/apis/maps/documentation/examples/geoxml-kml.html Point Google Maps to the KML file which has been uploaded to your website. Be sure and test the KML file first with Google Earth.
4. Let me know if you see problems,
The following example shows the ISS and its past and future position propagated out 1 hour. Additionally, the map snaps to the current position of the ISS.
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>1</visibility>
<open>0</open>
<description>Network link example</description>
<NetworkLink>
<name>Next Satellite Position</name>
<visibility>1</visibility>
<open>0</open>
<description>A simple server-side script that generates a new sat position on each call</description>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&TimeSpan=1800&SampleCount=60&Satellite=25544]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
<NetworkLink>
<name>Past Satellite Position</name>
<visibility>1</visibility>
<open>0</open>
<description>A simple server-side script that generates a old sat position on each call</description>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&TimeSpan=-1800&SampleCount=60&Satellite=25544]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
<NetworkLink>
<name>Current Satellite Position</name>
<visibility>1</visibility>
<open>0</open>
<description>A simple server-side script that generates a old sat position on each call</description>
<refreshVisibility>1</refreshVisibility>
<flyToView>1</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=25544]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
</Folder>
</kml>
The current position of Genesat-1, no path displayed. A hybrid map is used and all controls are hidden.
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>1</visibility>
<open>0</open>
<description>Network link example</description>
<NetworkLink>
<name>Current Satellite Position</name>
<visibility>1</visibility>
<open>0</open>
<description>A simple server-side script that generates a old sat position on each call</description>
<refreshVisibility>1</refreshVisibility>
<flyToView>1</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=29655]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
</Folder>
</kml>
A smaller overview map showing Hubble (HST).
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>1</visibility>
<open>0</open>
<description>Network link example</description>
<NetworkLink>
<name>Next Satellite Position</name>
<visibility>1</visibility>
<open>0</open>
<description>A simple server-side script that generates a new sat position on each call</description>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&TimeSpan=5400&SampleCount=60&Satellite=20580]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
<NetworkLink>
<name>Past Satellite Position</name>
<visibility>1</visibility>
<open>0</open>
<description>A simple server-side script that generates a old sat position on each call</description>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&TimeSpan=-5400&SampleCount=60&Satellite=20580]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
<NetworkLink>
<name>Current Satellite Position</name>
<visibility>1</visibility>
<open>0</open>
<description>A simple server-side script that generates a old sat position on each call</description>
<refreshVisibility>1</refreshVisibility>
<flyToView>1</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=20580]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
</Folder>
</kml>
USA 97 is a classified Defense Department communications satellite. The DSCS 3 series was launched in the mid '90s into a GEO orbit. The position of this spacecraft is derived from Mike McCants' classified TLEs which are loaded into SPL automatically. More details on DSCS III here: http://msl.jpl.nasa.gov/QuickLooks/dscs3QL.html
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>1</visibility>
<open>0</open>
<description>Network link example</description>
<NetworkLink>
<name>DSCS III-8 B9 USA97</name>
<visibility>1</visibility>
<open>0</open>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=22915]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
</Folder>
</kml>
Several cubesats are shown here, showing that SPL+KML is not limited to a single spacecraft. This map may be a little excessive though it does show off the limitations of Google Maps in how it handles drawing lines. Line rendering appears to break around the poles and on the international date line. Not sure of any client side solutions for this.
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Folder>
<name>Network Links</name>
<visibility>1</visibility>
<open>0</open>
<description>Network link example</description>
<NetworkLink>
<name>CubeSat-OSCAR 55 (Cute-1) CO-55</name>
<visibility>1</visibility>
<open>0</open>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=27844]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
<NetworkLink>
<name>CubeSat-OSCAR 57 (CubeSat XI-IV) CO-57</name>
<visibility>1</visibility>
<open>0</open>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=27848]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
<NetworkLink>
<name>RS-22</name>
<visibility>1</visibility>
<open>0</open>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=27939]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
<NetworkLink>
<name>AMSAT-OSCAR 51 (Echo) AO-51</name>
<visibility>1</visibility>
<open>0</open>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=28375]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
<NetworkLink>
<name>VO-52</name>
<visibility>1</visibility>
<open>0</open>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=28650]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
<NetworkLink>
<name>CO-58</name>
<visibility>1</visibility>
<open>0</open>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=28895]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
<NetworkLink>
<name>CO-56</name>
<visibility>1</visibility>
<open>0</open>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=28941]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
<NetworkLink>
<name>HO-59</name>
<visibility>1</visibility>
<open>0</open>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=29484]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
<NetworkLink>
<name>GeneSat-1</name>
<visibility>1</visibility>
<open>0</open>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=29655]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
<NetworkLink>
<name>CAPE-1</name>
<visibility>1</visibility>
<open>0</open>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=31130]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
<NetworkLink>
<name>MAST</name>
<visibility>1</visibility>
<open>0</open>
<refreshVisibility>1</refreshVisibility>
<flyToView>0</flyToView>
<Link>
<href><![CDATA[http://www.williamslabs.com/sat/spl.py?Output=kml&Satellite=31126]]></href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>60</refreshInterval>
</Link>
</NetworkLink>
</Folder>
</kml>