Make OSM tile server configurable.

This patch makes it possible to configure the tile server used for serving the OpenStreetMap maps.
Add README with hints about the Tile Usage Policy (http://wiki.openstreetmap.org/wiki/Tile_usage_policy). A list of public available tile servers can be found here: http://wiki.openstreetmap.org/wiki/TMS
You can also configure the default zoom level.
This commit is contained in:
Klaus Weidenbach 2012-02-19 14:28:43 +01:00
parent 1dbc7fc340
commit ecfdb0ab23
3 changed files with 61 additions and 12 deletions

30
openstreetmap/README Normal file
View File

@ -0,0 +1,30 @@
____ OpenStreetMap Plugin ____
by Mike Macgirvin
Klaus Weidenbach
This addon allows you to use OpenStreetMap for displaying locations.
___ Requirements ___
To use this plugin you need a tile Server that provides the maps.
OpenStreetMap data is free for everyone to use. Their tile servers are not.
Please take a look at their "Tile Usage Policy":
http://wiki.openstreetmap.org/wiki/Tile_usage_policy
You can run your own tile server or choose one from their list of public
tile servers: http://wiki.openstreetmap.org/wiki/TMS
Support the OpenStreetMap community and share the load.
___ Configuration ___
Open the .htconfig.php file and add "openstreetmap" to the list of activated
addons.
$a->config['system']['addon'] = "openstreetmap, ..."
You have to add two configuration variables for the addon:
$a->config['openstreetmap']['tmsserver'] = 'http://www.openstreetmap.org/';
$a->config['openstreetmap']['zoom'] = '18';
The *tmsserver* points to the tile server you want to use. Use the full URL,
with protocol (http/s) and trailing slash. You can configure the default zoom
level on the map with *zoom*. 1 will show the whole world and 18 is the highest
zoom level available.

3
openstreetmap/admin.tpl Normal file
View File

@ -0,0 +1,3 @@
{{ inc field_input.tpl with $field=$tmsserver }}{{ endinc }}
{{ inc field_input.tpl with $field=$zoom }}{{ endinc }}
<div class="submit"><input type="submit" name="page_site" value="$submit" /></div>

View File

@ -1,45 +1,45 @@
<?php <?php
/** /**
* Name: OpenStreetMap * Name: OpenStreetMap
* Description: Use openstreetmap.org for displaying locations. * Description: Use OpenStreetMap for displaying locations.
* Version: 1.0 * Version: 1.1
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike> * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
* * Author: Klaus Weidenbach
* *
*/ */
function openstreetmap_install() { function openstreetmap_install() {
register_hook('render_location', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_location'); register_hook('render_location', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_location');
logger("installed openstreetmap"); logger("installed openstreetmap");
} }
function openstreetmap_uninstall() { function openstreetmap_uninstall() {
unregister_hook('render_location', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_location'); unregister_hook('render_location', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_location');
logger("removed openstreetmap"); logger("removed openstreetmap");
} }
function openstreetmap_location($a, &$item) { function openstreetmap_location($a, &$item) {
if(! (strlen($item['location']) || strlen($item['coord']))) if(! (strlen($item['location']) || strlen($item['coord'])))
return; return;
/*
* Get the configuration variables from the .htconfig file.
*/
$tmsserver = get_config('openstreetmap','tmsserver');
$zoom = get_config('openstreetmap','zoom');
$location = ''; $location = '';
$coord = ''; $coord = '';
$location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="http://www.openstreetmap.org/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : ''); $location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="'.$tmsserver.'?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
if($item['coord']) { if($item['coord']) {
$coords = explode(' ', $item['coord']); $coords = explode(' ', $item['coord']);
if(count($coords) > 1) { if(count($coords) > 1) {
$coord = '<a target="map" title="' . $item['coord'] . '" href="http://www.openstreetmap.org/?lat=' . urlencode($coords[0]) . '&lon=' . urlencode($coords[1]) . '&zoom=18">' . $item['coord'] . '</a>' ; $coord = '<a target="map" title="' . $item['coord'] . '" href="'.$tmsserver.'?lat=' . urlencode($coords[0]) . '&lon=' . urlencode($coords[1]) . '&zoom='.$zoom.'">' . $item['coord'] . '</a>' ;
} }
} }
if(strlen($coord)) { if(strlen($coord)) {
@ -52,3 +52,19 @@ function openstreetmap_location($a, &$item) {
return; return;
} }
function openstreetmap_plugin_admin (&$a, &$o) {
$t = file_get_contents( dirname(__file__)."/admin.tpl");
$o = replace_macros( $t, array(
'$submit' => t('Submit'),
'$tmsserver' => array('tmsserver', t('Tile Server URL'), get_config('openstreetmap','tmsserver' ), t('A list of <a href="http://wiki.openstreetmap.org/wiki/TMS" target="_blank">public tile servers</a>')),
'$zoom' => array('zoom', t('Default zoom'), get_config('openstreetmap','zoom' ), t('The default zoom level. (1:world, 18:highest)')),
));
}
function openstreetmap_plugin_admin_post (&$a) {
$url = ((x($_POST, 'tmsserver')) ? notags(trim($_POST['tmsserver'])) : '');
$zoom = ((x($_POST, 'zoom')) ? intval(trim($_POST['zoom'])) : '17');
set_config('openstreetmap', 'tmsserver', $url);
set_config('openstreetmap', 'zoom', $zoom);
info( t('Settings updated.'). EOL);
}