maxResults is not valid.
';
die();
}
$maxResults = $testMatch;
$testMatch = NULL;
}
if (isset($_REQUEST["outputFormat"]) & $_REQUEST["outputFormat"] != "") {
$testMatch = $_REQUEST["outputFormat"];
if (!($testMatch == 'json')){
echo 'outputFormat is not valid.
';
die();
}
$outputFormat = $testMatch;
$testMatch = NULL;
}
if (isset($_REQUEST["searchEPSG"]) & $_REQUEST["searchEPSG"] != "") {
$testMatch = $_REQUEST["searchEPSG"];
if (!($testMatch == '31467' or $testMatch == '31466' or $testMatch == '31468' or $testMatch == '25832' or $testMatch == '4326')){
echo 'searchEPSG is not valid.
';
die();
}
$searchEPSG = $testMatch;
$testMatch = NULL;
}
/*if (isset($_REQUEST["callback"]) & $_REQUEST["callback"] != "") {
$testMatch = $_REQUEST["callback"];
$pattern = '/^jQuery\d+_\d+$/';
if (!preg_match($pattern,$testMatch)){
//if (!($testMatch == '31467' or $testMatch == '31468' or $testMatch == '25832' or $testMatch == '4326')){
echo 'callback: '.$testMatch.' is not valid.
';
die();
}
$callback = $testMatch;
$testMatch = NULL;
}*/
//for debugging
$callback = $_REQUEST["callback"];
//get searchText as a parameter
$searchText = $_REQUEST['searchText']; //TODO: filter for insecure texts
$sstr = $searchText;
$epsg = $searchEPSG;
$searchThruWeb = true;
}
//$searchText = "fall 10, mend";
$key = BKG_GEOCODING_KEY;
$basUrl1 = "https://sg.geodatenzentrum.de/gdz_geokodierung__";
$basUrl2 = "/geosearch?query=";
$maxFeatures = 15;
//exchange some letters
//$e = new mb_exception("searchText1: ".$searchText);
$searchText= str_replace('ß', 'SS', str_replace('Ü', 'UE', str_replace('Ä', 'AE', str_replace('Ö', 'OE', mb_strtoupper($searchText)))));
//$e = new mb_exception("searchText2: ".$searchText);
$invokeUrl = $basUrl1.$key.$basUrl2.$searchText."&srsName=EPSG%3A".$searchEPSG."&count=".$maxResults;
$searchConnector = new connector($invokeUrl);
$searchResult = $searchConnector->file;
$gazetteerObject = json_decode($searchResult);
//parse json
$returnObject = new stdClass();
$countGeonames = 0;
$returnObject->totalResultsCount = 0;
foreach ($gazetteerObject->features as $feature) {
switch ($feature->properties->typ) {
//Landkreis/Gemeinde/Wohnplatz/Haus
case "Haus":
$returnObject->geonames[$countGeonames]->title = $feature->properties->text." ("."Haus".")";
$returnObject->geonames[$countGeonames]->category = "haus";
break;
case "Geoname":
$returnObject->geonames[$countGeonames]->title = $feature->properties->text;
break;
case "Strasse":
$returnObject->geonames[$countGeonames]->title = $feature->properties->text." ("."Straße".")";
$returnObject->geonames[$countGeonames]->category = "str";
break;
case "Ort":
$returnObject->geonames[$countGeonames]->title = $feature->properties->text." ("."Ort".")";
break;
default:
$returnObject->geonames[$countGeonames]->title = $feature->properties->text;
break;
}
$returnObject->geonames[$countGeonames]->category = "haus";
$returnObject->geonames[$countGeonames]->minx = str_replace(',', '.', $feature->bbox[0]);
$returnObject->geonames[$countGeonames]->miny = str_replace(',', '.',$feature->bbox[1]);
$returnObject->geonames[$countGeonames]->maxx = str_replace(',', '.',$feature->bbox[2]);
$returnObject->geonames[$countGeonames]->maxy = str_replace(',', '.',$feature->bbox[3]);
//slight adoption of zoombox for addresses - +/-
if ($searchEPSG == "4326" || $searchEPSG == "3857") {
$returnObject->geonames[$countGeonames]->minx = (string)($returnObject->geonames[$countGeonames]->minx - 0.0004);
$returnObject->geonames[$countGeonames]->miny = (string)($returnObject->geonames[$countGeonames]->miny - 0.0004);
$returnObject->geonames[$countGeonames]->maxx = (string)($returnObject->geonames[$countGeonames]->maxx + 0.0004);
$returnObject->geonames[$countGeonames]->maxy = (string)($returnObject->geonames[$countGeonames]->maxy + 0.0004);
} else {
$returnObject->geonames[$countGeonames]->minx = (string)($returnObject->geonames[$countGeonames]->minx - 30);
$returnObject->geonames[$countGeonames]->miny = (string)($returnObject->geonames[$countGeonames]->miny - 30);
$returnObject->geonames[$countGeonames]->maxx = (string)($returnObject->geonames[$countGeonames]->maxx + 30);
$returnObject->geonames[$countGeonames]->maxy = (string)($returnObject->geonames[$countGeonames]->maxy + 30);
}
$countGeonames++;
}
$returnObject->totalResultsCount = $countGeonames;
if ($returnObject->totalResultsCount == 0) {
$returnObject->geonames = array();
}
if (isset($callback) && $callback != '') {
$returnJson = $callback."(".json_encode($returnObject).")";
} else {
$returnJson = json_encode($returnObject);
}
header('Content-Type: application/json');
echo $returnJson;
?>