{showsidebar}) {
$sidebar .= ''
.join(' ', map{$entry->{$_}} @nameComposition)
.'
';
}
}
# Cache geo codes. Keep for a day.
$geoCache->set($geoCodes, 24*60*60);
return ($markers, $sidebar);
}
#-------------------------------------------------------------------
sub process {
my $session = shift;
my $config;
# Parse configuration options
foreach (@_) {
$_ =~ /^([^=]+)=(.+)$/;
$config->{lc($1)} = $2;
}
my $sidebar;
# Fetch data
my $data;
if (exists $config->{group}) {
$data = getDataFromGroup($session, $config->{group});
$config->{defaultAddressComposition} = 'homeAddress;homeZip;homeCity;homeState;homeCountry';
}
elsif (exists $config->{xml}) {
$data = getDataFromXML($session, $config->{xml}, $config->{xmlcontainer});
$config->{defaultAddressComposition} = 'address;zip;city;state;country';
}
elsif (exists $config->{address}) {
$data = [ { address => $config->{address} } ];
}
else {
return 'No datasource given.';
}
# Get key
my $key = $config->{key} || $session->config->get('googleMapsApiKey');
return 'No google maps api key given.' unless ($key);
my $mapId = $session->id->generate;
my $divId = "map_$mapId";
(my $map = "map_$mapId") =~ s/\-/\$/g;
my ($markers, $sidebar) = processAddresses($session, $config, $data, $map, $key);
my $scriptLoader = <
v\:* {
behavior:url(#default#VML);
}
EOHEAD
my $mapWidth = $config->{width} || 500;
my $mapHeight = $config->{height} || 300;
my $mapDiv = "";
my $javascript = <
//
EOMAP
return "$scriptLoader$javascript";
}
1;