safe => 0,
rebuild => 1,
},
- osm_map_url => {
+ osm_layers => {
type => "string",
- example => "/tiles/\${z}/\${x}/\${y}.png",
- description => "Url to get map tiles from (if none specified, uses the openstreetmap server, see http://wiki.openstreetmap.org/wiki/Creating_your_own_tiles for more info on serving your own tiles)",
+ example => { 'OSM', 'GoogleSatellite' },
+ 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 {
lat => $lat,
lon => $lon,
href => $href,
+ google_apikey => $config{'osm_google_apikey'},
};
return "<div id=\"mapdiv-$name\"></div>";
}
zoom => "urlParams['zoom']",
fullscreen => 1,
editable => 1,
+ google_apikey => $config{'osm_google_apikey'},
);
print "</script>";
print "</body></html>";
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&v=2&key='.$config{'osm_google_apikey'}.'&sensor=false" type="text/javascript" charset="utf-8"></script>';
+ }
+ return $code;
}
sub map_setup_code($;@) {
if ($mapurl) {
$options{'mapurl'} = $mapurl;
}
+ $options{'layers'} = $config{osm_layers};
return "mapsetup('mapdiv-$name', " . to_json(\%options) . ");";
}