friendica-addons-sekb/openstreetmap/openstreetmap.php
Klaus Weidenbach ecfdb0ab23 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.
2012-02-19 14:57:14 +01:00

70 lines
2.4 KiB
PHP
Executable file

<?php
/**
* Name: OpenStreetMap
* Description: Use OpenStreetMap for displaying locations.
* Version: 1.1
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
* Author: Klaus Weidenbach
*
*/
function openstreetmap_install() {
register_hook('render_location', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_location');
logger("installed openstreetmap");
}
function openstreetmap_uninstall() {
unregister_hook('render_location', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_location');
logger("removed openstreetmap");
}
function openstreetmap_location($a, &$item) {
if(! (strlen($item['location']) || strlen($item['coord'])))
return;
/*
* Get the configuration variables from the .htconfig file.
*/
$tmsserver = get_config('openstreetmap','tmsserver');
$zoom = get_config('openstreetmap','zoom');
$location = '';
$coord = '';
$location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="'.$tmsserver.'?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
if($item['coord']) {
$coords = explode(' ', $item['coord']);
if(count($coords) > 1) {
$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($location)
$location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
else
$location = '<span class="smalltext">' . $coord . '</span>';
}
$item['html'] = $location;
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);
}