]> git.openstreetmap.org Git - nominatim.git/blobdiff - website/search.php
allow slashes in house numbers
[nominatim.git] / website / search.php
index ae2c39635eed0b1d188ef1c29aeb61db07872e92..7c0838c9f57436467b3f10b26b7c3be833ea9491 100755 (executable)
                                                                $sPlaceIDs = join(',',$aPlaceIDs);
        
                                                                // Now they are indexed look for a house attached to a street we found
-                                                               $sHouseNumberRegex = '\\\\m'.str_replace(' ','[-, ]',$aSearch['sHouseNumber']).'\\\\M';                                         
+                                                               $sHouseNumberRegex = '\\\\m'.str_replace(' ','[-,/ ]',$aSearch['sHouseNumber']).'\\\\M';                                                
                                                                $sSQL = "select place_id from placex where parent_place_id in (".$sPlaceIDs.") and housenumber ~* E'".$sHouseNumberRegex."'";
                                                                if (sizeof($aExcludePlaceIDs))
                                                                {
                                        $sSQL .= "coalesce(importance,0.9-(rank_search::float/30)) as importance ";
                                        $sSQL .= "from placex where place_id in ($sPlaceIDs) ";
                                        $sSQL .= "and placex.rank_address between $iMinAddressRank and $iMaxAddressRank ";
+                                       $sSQL .= "and linked_place_id is null ";
                                        $sSQL .= "group by osm_type,osm_id,class,type,admin_level,rank_search,rank_address,country_code,importance";
                                        if (!$bDeDupe) $sSQL .= ",place_id";
                                        $sSQL .= ",get_address_by_language(place_id, $sLanguagePrefArraySQL) ";
        }
        foreach($aSearchResults as $iResNum => $aResult)
        {
-               if (CONST_Search_AreaPolygons || true)
+               if (CONST_Search_AreaPolygons)
                {
                        // Get the bounding box and outline polygon
                        $sSQL = "select place_id,numfeatures,area,outline,";
                        $sSQL .= "ST_AsText(outline) as outlinestring from get_place_boundingbox_quick(".$aResult['place_id'].")";
 
                        $sSQL = "select place_id,0 as numfeatures,st_area(geometry) as area,";
+                       $sSQL .= "ST_Y(centroid) as centrelat,ST_X(centroid) as centrelon,";
                        $sSQL .= "ST_Y(ST_PointN(ExteriorRing(ST_Box2D(geometry)),4)) as minlat,ST_Y(ST_PointN(ExteriorRing(ST_Box2D(geometry)),2)) as maxlat,";
                        $sSQL .= "ST_X(ST_PointN(ExteriorRing(ST_Box2D(geometry)),1)) as minlon,ST_X(ST_PointN(ExteriorRing(ST_Box2D(geometry)),3)) as maxlon,";
                        $sSQL .= "ST_AsText(geometry) as outlinestring from placex where place_id = ".$aResult['place_id'].' and st_geometrytype(ST_Box2D(geometry)) = \'ST_Polygon\'';
                        }
                        if ($aPointPolygon['place_id'])
                        {
+                               if ($aPointPolygon['centrelon'] !== null && $aPointPolygon['centrelat'] !== null ) {
+                                       $aResult['lat'] = $aPointPolygon['centrelat'];
+                                       $aResult['lon'] = $aPointPolygon['centrelon'];
+                               }
                                // Translate geometary string to point array
                                if (preg_match('#POLYGON\\(\\(([- 0-9.,]+)#',$aPointPolygon['outlinestring'],$aMatch))
                                {