#!/usr/local/bin/perl -w use strict; use Template; use YAML qw( Load ); my $trip = Load( join "", <> ); my $data = join "", <DATA>; my $mappoints = join ", ", map { mappoint( $_->{ lat }, $_->{ lon } ) } @$trip; if( scalar @$trip <= 1 ) { die "Need at least one track point"; } my $first = $trip->[0]; my $center = mappoint( $first->{ lat }, $first->{ lon } ); my $tmpl = Template->new; $tmpl->process( \$data, { mappoints => $mappoints, center => $center } ) or die $tmpl->error(); sub mappoint { my( $lat, $lon ) = @_; return "new google.maps.LatLng( $lat, $lon )"; } __DATA__ <!DOCTYPE html> <html> <head> <script src="http://maps.googleapis.com/maps/api/js"> </script> <script> function initialize() { var mapProp = { center:[% center %], zoom:16, mapTypeId:google.maps.MapTypeId.HYBRID }; var map=new google.maps.Map( document.getElementById("googleMap"), mapProp); var tracks=[ [% mappoints %] ]; var path=new google.maps.Polyline({ path:tracks, strokeColor:"#f9290c", strokeOpacity:0.7, strokeWeight:4 }); path.setMap(map); } google.maps.event.addDomListener(window, 'load', initialize); </script> </head> <body> <div id="googleMap" style="width:1000px;height:600px;"></div> </body> </html>