X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/93a12752ace90080fc62f4ea030a74f844ad09c8..c7bdebaaf134729356852918b387071c92f85e72:/IkiWiki/Plugin/osm.pm?ds=sidebyside diff --git a/IkiWiki/Plugin/osm.pm b/IkiWiki/Plugin/osm.pm index f570f4032..472e26945 100644 --- a/IkiWiki/Plugin/osm.pm +++ b/IkiWiki/Plugin/osm.pm @@ -192,6 +192,7 @@ sub process_waypoint { } } $icon = urlto($icon, $dest, 1); + $icon =~ s!/*$!!; # hack - urlto shouldn't be appending a slash in the first place $tag = '' unless $tag; register_rendered_files($map, $page, $dest); $pagestate{$page}{'osm'}{$map}{'waypoints'}{$name} = { @@ -359,23 +360,29 @@ sub writekml($;$) { foreach my $map (keys %waypoints) { my $output; my $writer = XML::Writer->new( OUTPUT => \$output, - DATA_MODE => 1, ENCODING => 'UTF-8'); + DATA_MODE => 1, DATA_INDENT => ' ', ENCODING => 'UTF-8'); $writer->xmlDecl(); $writer->startTag("kml", "xmlns" => "http://www.opengis.net/kml/2.2"); $writer->startTag("Document"); # first pass: get the icons + my %tags_map = (); # keep track of tags seen foreach my $name (keys %{$waypoints{$map}}) { my %options = %{$waypoints{$map}{$name}}; - $writer->startTag("Style", id => $options{tag}); - $writer->startTag("IconStyle"); - $writer->startTag("Icon"); - $writer->startTag("href"); - $writer->characters($options{icon}); - $writer->endTag(); - $writer->endTag(); - $writer->endTag(); - $writer->endTag(); + if (!$tags_map{$options{tag}}) { + debug("found new style " . $options{tag}); + $tags_map{$options{tag}} = (); + $writer->startTag("Style", id => $options{tag}); + $writer->startTag("IconStyle"); + $writer->startTag("Icon"); + $writer->startTag("href"); + $writer->characters($options{icon}); + $writer->endTag(); + $writer->endTag(); + $writer->endTag(); + $writer->endTag(); + } + $tags_map{$options{tag}}{$name} = \%options; } foreach my $name (keys %{$waypoints{$map}}) { @@ -500,7 +507,7 @@ sub include_javascript ($) { } } if ($loader) { - return embed_map_code($page) . ""; + return embed_map_code($page) . ""; } else { return ''; @@ -527,7 +534,7 @@ sub cgi($) { print ""; print "
"; print embed_map_code(); - print "