9 => 12,
10 => 17, // City
11 => 17,
- 12 => 18, // Town / Village
- 13 => 18,
- 14 => 22, // Suburb
- 15 => 22,
+ 12 => 18, // Town
+ 13 => 19, // Village
+ 14 => 22, // Neighbourhood
+ 15 => 25, // Locality
16 => 26, // major street
17 => 27, // minor street
18 => 30, // or >, Building
protected function lookupLargeArea($sPointSQL, $iMaxRank)
{
+ $sCountryCode = $this->getCountryCode($sPointSQL);
+ if (CONST_Search_WithinCountries and $sCountryCode == null) {
+ return null;
+ }
+
if ($iMaxRank > 4) {
$aPlace = $this->lookupPolygon($sPointSQL, $iMaxRank);
if ($aPlace) {
// If no polygon which contains the searchpoint is found,
// searches in the country_osm_grid table for a polygon.
- return $this->lookupInCountry($sPointSQL, $iMaxRank);
+ return $this->lookupInCountry($sPointSQL, $iMaxRank, $sCountryCode);
}
- protected function lookupInCountry($sPointSQL, $iMaxRank)
+ protected function getCountryCode($sPointSQL)
{
- Debug::newFunction('lookupInCountry');
+ Debug::newFunction('getCountryCode');
// searches for polygon in table country_osm_grid which contains the searchpoint
// and searches for the nearest place node to the searchpoint in this polygon
$sSQL = 'SELECT country_code FROM country_osm_grid';
null,
'Could not determine country polygon containing the point.'
);
- Debug::printVar('Country code', $sCountryCode);
+ return $sCountryCode;
+ }
+ protected function lookupInCountry($sPointSQL, $iMaxRank, $sCountryCode)
+ {
+ Debug::newFunction('lookupInCountry');
if ($sCountryCode) {
if ($iMaxRank > 4) {
// look for place nodes with the given country code