Dependencies http://n01se.net/gmapez/ http://search.cpan.org/~perhenrik/Geo-GeoNames-0.06 Didn't bother to redo the page using CSS, it's still using the old HTML. (TODO) But the output is a CGI script that talks to a DB, and generates a Google Map on the fly. - Inner workings: A parser which read in the old data, and populated the DB. Use CPAN's Geo::GeoNames which looks up the country name, and automatically enters LAT/LON information into the table, as a second pass. This can be run asynchronously to automatically update LAT/LON for new entries, so the operator doesn't have to know there -- city or country name is enough. If a more specific entry is given, such as a city instead of a country, Geo::GeoNames will find the LAT/LON for that, and place the marker where the city is located. For the Google Map API: http://n01se.net/gmapez/ Note that for the moment both IXPs in TZ are overlapping each other because the same LAT/LON are used since Geo::GeoNames defaults to the same value for the location of Tanzania, and no city has been provided. - Output: The HTML output is done using the old HTML page which is tagged and then through the cgi on output. Tags are replaced, such as Google Map API key with the right one, and then the data is filled in for the map (using the variables from the DB). - DB: Uses Pg. Can be modified to use MySQL trivially. There are two tables: DATA Data proper KIND Type, Color (IXP - RED, ROOT SERVER - BLUE) ... this will allow to have different types of data on the map, such as Root servers, IXPs, and then we can add other parameters to decide to show one vs. the other, etc... (by passing params to the CGI). - Updating: Simple PHP forms to view and modify the data :) - Downsides & future directions: It's dependent on Google... It's not possible to place labels on the country itself, say "SZIX" on Swaziland (well it wouldn't fit anyway...), or not possible with gmapez. Currently, it's not possible to highlight countries -- Google Charts has a graph type called "world map", but the future direction will probably be to have SVG+PNG rendering with CSS/JS + JQuery or DojoToolkit to do the work.