osm: add optional google maps support
for google maps to work, an API key needs to be added to the configurationmaster
parent
b57cad3131
commit
acc4d7d7d6
|
@ -74,7 +74,13 @@ sub getsetup () {
|
|||
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 {
|
||||
|
@ -144,6 +150,7 @@ sub preprocess {
|
|||
lat => $lat,
|
||||
lon => $lon,
|
||||
href => $href,
|
||||
google_apikey => $config{'osm_google_apikey'},
|
||||
};
|
||||
return "<div id=\"mapdiv-$name\"></div>";
|
||||
}
|
||||
|
@ -527,6 +534,7 @@ sub cgi($) {
|
|||
zoom => "urlParams['zoom']",
|
||||
fullscreen => 1,
|
||||
editable => 1,
|
||||
google_apikey => $config{'osm_google_apikey'},
|
||||
);
|
||||
print "</script>";
|
||||
print "</body></html>";
|
||||
|
@ -537,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&v=2&key='.$config{'osm_google_apikey'}.'&sensor=false" type="text/javascript" charset="utf-8"></script>';
|
||||
}
|
||||
return $code;
|
||||
}
|
||||
|
||||
sub map_setup_code($;@) {
|
||||
|
|
|
@ -34,6 +34,10 @@ function mapsetup(divname, options) {
|
|||
new OpenLayers.Control.Permalink(permalink)
|
||||
],
|
||||
displayProjection: new OpenLayers.Projection("EPSG:4326"),
|
||||
maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
|
||||
projection: "EPSG:900913",
|
||||
units: "m",
|
||||
maxResolution: 156543.0339,
|
||||
numZoomLevels: 18
|
||||
});
|
||||
|
||||
|
@ -44,6 +48,17 @@ function mapsetup(divname, options) {
|
|||
map.addLayer(new OpenLayers.Layer.OSM());
|
||||
}
|
||||
|
||||
// this nightmare is possible through http://docs.openlayers.org/library/spherical_mercator.html
|
||||
if (options.google_apikey && options.google_apikey != 'null') {
|
||||
googleLayer = new OpenLayers.Layer.Google(
|
||||
"Google Hybrid",
|
||||
{type: G_HYBRID_MAP,
|
||||
'sphericalMercator': true,
|
||||
'maxExtent': new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
|
||||
projection: new OpenLayers.Projection("EPSG:3857")}
|
||||
);
|
||||
map.addLayer(googleLayer);
|
||||
}
|
||||
if (options.format == 'CSV') {
|
||||
pois = new OpenLayers.Layer.Text( "CSV",
|
||||
{ location: options.csvurl,
|
||||
|
|
Loading…
Reference in New Issue