}
$this->oPlaceLookup->loadParamArray($oParams, $sForceGeometryType);
- $this->oPlaceLookup->setIncludePolygonAsPoints($oParams->getBool('polygon'));
$this->oPlaceLookup->setIncludeAddressDetails($oParams->getBool('addressdetails', false));
}
$oValidTokens = new TokenList();
if (!empty($aTokens)) {
- $sSQL = 'SELECT word_id, word_token, word, class, type, country_code, operator, search_name_count';
- $sSQL .= ' FROM word ';
- $sSQL .= ' WHERE word_token in ('.join(',', $this->oDB->getDBQuotedList($aTokens)).')';
-
- Debug::printSQL($sSQL);
-
$oValidTokens->addTokensFromDB(
$this->oDB,
$aTokens,
$sSQL .= 'WHERE place_id in ('.$sPlaceIds.') ';
$sSQL .= ' AND (';
$sSQL .= " placex.rank_address between $this->iMinAddressRank and $this->iMaxAddressRank ";
- if (14 >= $this->iMinAddressRank && 14 <= $this->iMaxAddressRank) {
- $sSQL .= " OR (extratags->'place') = 'city'";
- }
+ $sSQL .= " OR placex.rank_search between $this->iMinAddressRank and $this->iMaxAddressRank ";
if ($this->aAddressRankList) {
$sSQL .= ' OR placex.rank_address in ('.join(',', $this->aAddressRankList).')';
}
$aSearchResults = $this->oPlaceLookup->lookup($aResults);
- $aClassType = ClassTypes\getListWithImportance();
$aRecheckWords = preg_split('/\b[\s,\\-]*/u', $sQuery);
foreach ($aRecheckWords as $i => $sWord) {
if (!preg_match('/[\pL\pN]/', $sWord)) unset($aRecheckWords[$i]);
Debug::printVar('Recheck words', $aRecheckWords);
foreach ($aSearchResults as $iIdx => $aResult) {
- // Default
- $fDiameter = ClassTypes\getProperty($aResult, 'defdiameter', 0.0001);
+ $fRadius = ClassTypes\getDefRadius($aResult);
- $aOutlineResult = $this->oPlaceLookup->getOutlines($aResult['place_id'], $aResult['lon'], $aResult['lat'], $fDiameter/2);
+ $aOutlineResult = $this->oPlaceLookup->getOutlines($aResult['place_id'], $aResult['lon'], $aResult['lat'], $fRadius);
if ($aOutlineResult) {
$aResult = array_merge($aResult, $aOutlineResult);
}
- if ($aResult['extra_place'] == 'city') {
- $aResult['class'] = 'place';
- $aResult['type'] = 'city';
- $aResult['rank_search'] = 16;
- }
-
// Is there an icon set for this type of result?
- $aClassInfo = ClassTypes\getInfo($aResult);
-
- if ($aClassInfo) {
- if (isset($aClassInfo['icon'])) {
- $aResult['icon'] = CONST_Website_BaseURL.'images/mapicons/'.$aClassInfo['icon'].'.p.20.png';
- }
-
- if (isset($aClassInfo['label'])) {
- $aResult['label'] = $aClassInfo['label'];
- }
+ $sIcon = ClassTypes\getIconFile($aResult);
+ if (isset($sIcon)) {
+ $aResult['icon'] = $sIcon;
}
+ $sLabel = ClassTypes\getLabel($aResult);
+ if (isset($sLabel)) {
+ $aResult['label'] = $sLabel;
+ }
$aResult['name'] = $aResult['langaddress'];
if ($oCtx->hasNearPoint()) {
// - number of exact matches from the query
$aResult['foundorder'] -= $aResults[$aResult['place_id']]->iExactMatches;
// - importance of the class/type
- if (isset($aClassType[$aResult['class'].':'.$aResult['type']]['importance'])
- && $aClassType[$aResult['class'].':'.$aResult['type']]['importance']
- ) {
- $aResult['foundorder'] += 0.0001 * $aClassType[$aResult['class'].':'.$aResult['type']]['importance'];
+ $iClassImportance = ClassTypes\getImportance($aResult);
+ if (isset($iClassImportance)) {
+ $aResult['foundorder'] += 0.0001 * $iClassImportance;
} else {
$aResult['foundorder'] += 0.01;
}