aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2012-08-25 10:10:03 -0400
committerJoey Hess <joey@kitenet.net>2012-08-25 10:10:03 -0400
commitcd755cacc67da2cadb30b3e76848057a51b3923a (patch)
treea458bbffdeb090176997d7c2704a73afcc76d0a7 /IkiWiki/Plugin
parent0ddbd63a65b19fb78891c61e5c2f124f7a2c635f (diff)
parent636e04a13a96f11c67d82aebfb4ee9fd51b61110 (diff)
downloadikiwiki-cd755cacc67da2cadb30b3e76848057a51b3923a.tar
ikiwiki-cd755cacc67da2cadb30b3e76848057a51b3923a.tar.gz
Merge remote-tracking branch 'anarcat/osm_arbitrary_layers'
Diffstat (limited to 'IkiWiki/Plugin')
-rw-r--r--IkiWiki/Plugin/osm.pm30
1 files changed, 28 insertions, 2 deletions
diff --git a/IkiWiki/Plugin/osm.pm b/IkiWiki/Plugin/osm.pm
index 764767525..2c555f372 100644
--- a/IkiWiki/Plugin/osm.pm
+++ b/IkiWiki/Plugin/osm.pm
@@ -67,7 +67,20 @@ sub getsetup () {
safe => 0,
rebuild => 1,
},
-
+ osm_layers => {
+ type => "string",
+ example => { 'OSM', 'GoogleSattelite' },
+ description => "Layers to use in the map. Can be either the 'OSM' string or a type option for Google maps (GoogleNormal, GoogleSatellite, GoogleHybrid or GooglePhysical). It can also be an arbitrary URL in a syntax acceptable for OpenLayers.Layer.OSM.url parameter.",
+ safe => 0,
+ rebuild => 1,
+ },
+ osm_google_apikey => {
+ type => "string",
+ example => "",
+ description => "Google maps API key, Google layer not used if missing, see https://code.google.com/apis/console/ to get an API key",
+ safe => 1,
+ rebuild => 1,
+ },
}
sub register_rendered_files {
@@ -137,6 +150,7 @@ sub preprocess {
lat => $lat,
lon => $lon,
href => $href,
+ google_apikey => $config{'osm_google_apikey'},
};
return "<div id=\"mapdiv-$name\"></div>";
}
@@ -520,6 +534,7 @@ sub cgi($) {
zoom => "urlParams['zoom']",
fullscreen => 1,
editable => 1,
+ google_apikey => $config{'osm_google_apikey'},
);
print "</script>";
print "</body></html>";
@@ -530,9 +545,13 @@ sub cgi($) {
sub embed_map_code(;$) {
my $page=shift;
my $olurl = $config{osm_openlayers_url} || "http://www.openlayers.org/api/OpenLayers.js";
- return '<script src="'.$olurl.'" type="text/javascript" charset="utf-8"></script>'.
+ my $code = '<script src="'.$olurl.'" type="text/javascript" charset="utf-8"></script>'."\n".
'<script src="'.urlto("ikiwiki/osm.js", $page).
'" type="text/javascript" charset="utf-8"></script>'."\n";
+ if ($config{'osm_google_apikey'}) {
+ $code .= '<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key='.$config{'osm_google_apikey'}.'&sensor=false" type="text/javascript" charset="utf-8"></script>';
+ }
+ return $code;
}
sub map_setup_code($;@) {
@@ -540,6 +559,8 @@ sub map_setup_code($;@) {
my $name=shift;
my %options=@_;
+ my $mapurl = $config{osm_map_url};
+
eval q{use JSON};
error $@ if $@;
@@ -556,6 +577,11 @@ sub map_setup_code($;@) {
$options{'kmlurl'} = urlto($map."/pois.kml");
}
+ if ($mapurl) {
+ $options{'mapurl'} = $mapurl;
+ }
+ $options{'layers'} = $config{osm_layers};
+
return "mapsetup('mapdiv-$name', " . to_json(\%options) . ");";
}