protected $aLangPrefOrder = array();
protected $aExcludePlaceIDs = array();
- protected $bReverseInPlan = false;
+ protected $bReverseInPlan = true;
protected $iLimit = 20;
protected $iFinalLimit = 10;
private function viewboxImportanceFactor($fX, $fY)
{
+ if (!$this->aViewBox) {
+ return 1;
+ }
+
$fWidth = ($this->aViewBox[2] - $this->aViewBox[0])/2;
$fHeight = ($this->aViewBox[3] - $this->aViewBox[1])/2;
// Do we have anything that looks like a lat/lon pair?
$sQuery = $oCtx->setNearPointFromQuery($sQuery);
- $aResults = array();
if ($sQuery || $this->aStructuredQuery) {
// Start with a single blank search
$aSearches = array(new SearchDescription($oCtx));
// Start the search process
$iGroupLoop = 0;
$iQueryLoop = 0;
+ $aNextResults = array();
foreach ($aGroupedSearches as $iGroupedRank => $aSearches) {
$iGroupLoop++;
+ $aResults = $aNextResults;
foreach ($aSearches as $oSearch) {
$iQueryLoop++;
if ($iQueryLoop > 20) break;
}
+ if (!empty($aResults)) {
+ $aSplitResults = Result::splitResults($aResults);
+ Debug::printVar('Split results', $aSplitResults);
+ if ($iGroupLoop <= 4 && empty($aSplitResults['tail'])
+ && reset($aSplitResults['head'])->iResultRank > 0) {
+ // Haven't found an exact match for the query yet.
+ // Therefore add result from the next group level.
+ $aNextResults = $aSplitResults['head'];
+ foreach ($aNextResults as $oRes) {
+ $oRes->iResultRank--;
+ }
+ $aResults = array();
+ } else {
+ $aResults = $aSplitResults['head'];
+ }
+ }
+
if (!empty($aResults) && ($this->iMinAddressRank != 0 || $this->iMaxAddressRank != 30)) {
// Need to verify passes rank limits before dropping out of the loop (yuk!)
// reduces the number of place ids, like a filter