1
0
mirror of https://github.com/klokantech/tileserver-php.git synced 2025-08-08 15:46:30 +02:00

Utfgrid empty response bug fixed (related #62)

This commit is contained in:
Dalibor Janák
2016-01-26 22:55:34 +01:00
parent f5408fd108
commit 6b5933e21f

View File

@@ -35,25 +35,25 @@ class Server {
/** /**
* Configuration of TileServer [baseUrls, serverTitle] * Configuration of TileServer [baseUrls, serverTitle]
* @var array * @var array
*/ */
public $config; public $config;
/** /**
* Datasets stored in file structure * Datasets stored in file structure
* @var array * @var array
*/ */
public $fileLayer = array(); public $fileLayer = array();
/** /**
* Datasets stored in database * Datasets stored in database
* @var array * @var array
*/ */
public $dbLayer = array(); public $dbLayer = array();
/** /**
* PDO database connection * PDO database connection
* @var object * @var object
*/ */
public $db; public $db;
@@ -143,7 +143,7 @@ class Server {
} }
/** /**
* *
* @param string $jsonFileName * @param string $jsonFileName
* @return array * @return array
*/ */
@@ -166,7 +166,7 @@ class Server {
$resultdata = $result->fetchAll(); $resultdata = $result->fetchAll();
foreach ($resultdata as $r) { foreach ($resultdata as $r) {
$value = preg_replace('/(\\n)+/','',$r['value']); $value = preg_replace('/(\\n)+/','',$r['value']);
$metadata[$r['name']] = addslashes($value); $metadata[$r['name']] = addslashes($value);
} }
if (!array_key_exists('minzoom', $metadata) if (!array_key_exists('minzoom', $metadata)
@@ -203,7 +203,7 @@ class Server {
$metadata['basename'] = $mbt[0]; $metadata['basename'] = $mbt[0];
return $metadata; return $metadata;
} }
/** /**
* Convert row number to latitude of the top of the row * Convert row number to latitude of the top of the row
* @param integer $r * @param integer $r
@@ -406,20 +406,22 @@ class Server {
} }
try { try {
$this->DBconnect($tileset . '.mbtiles'); $this->DBconnect($tileset . '.mbtiles');
$result = $this->db->query('SELECT grid FROM grids WHERE tile_column = ' . $x . ' AND tile_row = ' . $y . ' AND zoom_level = ' . $z);
if (!isset($result) || $result === FALSE) {
header('Access-Control-Allow-Origin: *');
echo '{}';
die;
} else {
$data = $result->fetchColumn();
$grid = gzuncompress($data); $query = 'SELECT grid FROM grids WHERE tile_column = ' . $x . ' AND '
. 'tile_row = ' . $y . ' AND zoom_level = ' . $z;
$result = $this->db->query($query);
$data = $result->fetch(PDO::FETCH_ASSOC);
if ($data !== FALSE) {
$grid = gzuncompress($data['grid']);
$grid = substr(trim($grid), 0, -1); $grid = substr(trim($grid), 0, -1);
//adds legend (data) to output //adds legend (data) to output
$grid .= ',"data":{'; $grid .= ',"data":{';
$result = $this->db->query('SELECT key_name as key, key_json as json FROM grid_data WHERE zoom_level=' . $z . ' and tile_column=' . $x . ' and tile_row=' . $y); $kquery = 'SELECT key_name as key, key_json as json FROM grid_data '
. 'WHERE zoom_level=' . $z . ' and '
. 'tile_column=' . $x . ' and tile_row=' . $y;
$result = $this->db->query($kquery);
while ($r = $result->fetch(PDO::FETCH_ASSOC)) { while ($r = $result->fetch(PDO::FETCH_ASSOC)) {
$grid .= '"' . $r['key'] . '":' . $r['json'] . ','; $grid .= '"' . $r['key'] . '":' . $r['json'] . ',';
} }
@@ -427,14 +429,18 @@ class Server {
header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Origin: *');
if (isset($_GET['callback']) && !empty($_GET['callback'])) { if (isset($_GET['callback']) && !empty($_GET['callback'])) {
header("Content-Type:text/javascript charset=utf-8"); header('Content-Type:text/javascript charset=utf-8');
echo $_GET['callback'] . '(' . $grid . ');'; echo $_GET['callback'] . '(' . $grid . ');';
} else { } else {
header("Content-Type:text/javascript; charset=utf-8"); header('Content-Type:text/javascript; charset=utf-8');
echo $grid; echo $grid;
} }
} } else {
} catch (PDOException $e) { header('Access-Control-Allow-Origin: *');
echo '{}';
die;
}
} catch (Exception $e) {
header('Content-type: text/plain'); header('Content-type: text/plain');
print 'Error querying the database: ' . $e->getMessage(); print 'Error querying the database: ' . $e->getMessage();
} }
@@ -515,7 +521,7 @@ class Json extends Server {
/** /**
* Callback for JSONP default grid * Callback for JSONP default grid
* @var string * @var string
*/ */
private $callback = 'grid'; private $callback = 'grid';
@@ -525,27 +531,27 @@ class Json extends Server {
public $layer = 'index'; public $layer = 'index';
/** /**
* @var integer * @var integer
*/ */
public $z; public $z;
/** /**
* @var integer * @var integer
*/ */
public $y; public $y;
/** /**
* @var integer * @var integer
*/ */
public $x; public $x;
/** /**
* @var string * @var string
*/ */
public $ext; public $ext;
/** /**
* *
* @param array $params * @param array $params
*/ */
public function __construct($params) { public function __construct($params) {
@@ -566,7 +572,7 @@ class Json extends Server {
$metadata['scheme'] = 'xyz'; $metadata['scheme'] = 'xyz';
$tiles = array(); $tiles = array();
foreach ($this->config['baseUrls'] as $url) { foreach ($this->config['baseUrls'] as $url) {
$url = '' . $this->config['protocol'] . '://' . $url . '/' . $url = '' . $this->config['protocol'] . '://' . $url . '/' .
$metadata['basename'] . '/{z}/{x}/{y}'; $metadata['basename'] . '/{z}/{x}/{y}';
if(strlen($metadata['format']) <= 4){ if(strlen($metadata['format']) <= 4){
$url .= '.' . $metadata['format']; $url .= '.' . $metadata['format'];
@@ -670,27 +676,27 @@ class Wmts extends Server {
public $layer; public $layer;
/** /**
* @var integer * @var integer
*/ */
public $z; public $z;
/** /**
* @var integer * @var integer
*/ */
public $y; public $y;
/** /**
* @var integer * @var integer
*/ */
public $x; public $x;
/** /**
* @var string * @var string
*/ */
public $ext; public $ext;
/** /**
* *
* @param array $params * @param array $params
*/ */
public function __construct($params) { public function __construct($params) {
@@ -714,7 +720,7 @@ class Wmts extends Server {
} }
/** /**
* Returns tilesets getCapabilities * Returns tilesets getCapabilities
*/ */
public function getCapabilities() { public function getCapabilities() {
header("Content-type: application/xml"); header("Content-type: application/xml");
@@ -1184,10 +1190,10 @@ class Wmts extends Server {
$format = $this->getGlobal('Format'); $format = $this->getGlobal('Format');
} }
parent::renderTile( parent::renderTile(
$this->getGlobal('Layer'), $this->getGlobal('Layer'),
$this->getGlobal('TileMatrix'), $this->getGlobal('TileMatrix'),
$this->getGlobal('TileRow'), $this->getGlobal('TileRow'),
$this->getGlobal('TileCol'), $this->getGlobal('TileCol'),
$format $format
); );
} else { } else {
@@ -1208,27 +1214,27 @@ class Tms extends Server {
public $layer; public $layer;
/** /**
* @var integer * @var integer
*/ */
public $z; public $z;
/** /**
* @var integer * @var integer
*/ */
public $y; public $y;
/** /**
* @var integer * @var integer
*/ */
public $x; public $x;
/** /**
* @var string * @var string
*/ */
public $ext; public $ext;
/** /**
* *
* @param array $params * @param array $params
*/ */
public function __construct($params) { public function __construct($params) {