2010-11-01 18:21:15 +03:00
< ? php
header ( " content-type: text/html; charset=UTF-8 " );
?>
2012-11-17 01:22:04 +04:00
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Strict//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
2010-11-01 18:21:15 +03:00
< head >
< title > OpenStreetMap Nominatim : Search </ title >
< base href = " <?php echo CONST_Website_BaseURL;?> " />
< link href = " nominatim.xml " rel = " search " title = " Nominatim Search " type = " application/opensearchdescription+xml " />
2012-11-17 01:22:04 +04:00
< link href = " css/search.css " rel = " stylesheet " type = " text/css " />
2010-11-01 18:21:15 +03:00
2012-11-17 01:22:04 +04:00
< script src = " js/OpenLayers.js " type = " text/javascript " ></ script >
< script src = " js/tiles.js " type = " text/javascript " ></ script >
< script src = " js/prototype-1.6.0.3.js " type = " text/javascript " ></ script >
2010-11-01 18:21:15 +03:00
< script type = " text/javascript " >
2013-08-27 20:21:20 +04:00
2010-11-01 18:21:15 +03:00
var map ;
function handleResize ()
{
if ( $ ( 'searchresults' ))
{
2013-08-27 20:21:20 +04:00
var viewwidth = (( document . documentElement . clientWidth > 0 ? document . documentElement . clientWidth : document . documentElement . offsetWidth ) - 200 ) + 'px' ;
2012-11-17 01:22:04 +04:00
$ ( 'map' ) . style . width = viewwidth ;
$ ( 'report' ) . style . width = viewwidth ;
2010-11-01 18:21:15 +03:00
}
else
{
2012-11-17 01:22:04 +04:00
$ ( 'map' ) . style . width = (( document . documentElement . clientWidth > 0 ? document . documentElement . clientWidth : document . documentElement . offsetWidth ) - 0 ) + 'px' ;
$ ( 'map' ) . style . left = '0px' ;
2010-11-01 18:21:15 +03:00
}
2013-08-27 20:21:20 +04:00
2012-11-17 01:22:04 +04:00
if ( $ ( 'map' )) $ ( 'map' ) . style . height = (( document . documentElement . clientHeight > 0 ? document . documentElement . clientHeight : document . documentElement . offsetHeight ) - 38 ) + 'px' ;
if ( $ ( 'searchresults' )) $ ( 'searchresults' ) . style . height = (( document . documentElement . clientHeight > 0 ? document . documentElement . clientHeight : document . documentElement . offsetHeight ) - 38 ) + 'px' ;
if ( $ ( 'report' )) $ ( 'report' ) . style . height = (( document . documentElement . clientHeight > 0 ? document . documentElement . clientHeight : document . documentElement . offsetHeight ) - 38 ) + 'px' ;
2010-11-01 18:21:15 +03:00
}
window . onresize = handleResize ;
function panToLatLon ( lat , lon ) {
var lonLat = new OpenLayers . LonLat ( lon , lat ) . transform ( new OpenLayers . Projection ( " EPSG:4326 " ), map . getProjectionObject ());
map . panTo ( lonLat , < ? php echo $iZoom ?> );
}
2012-04-01 04:40:50 +04:00
function panToLatLonZoom ( lat , lon , zoom ) {
2010-11-01 18:21:15 +03:00
var lonLat = new OpenLayers . LonLat ( lon , lat ) . transform ( new OpenLayers . Projection ( " EPSG:4326 " ), map . getProjectionObject ());
if ( zoom != map . getZoom ())
map . setCenter ( lonLat , zoom );
else
map . panTo ( lonLat , 10 );
}
2012-11-10 01:35:45 +04:00
function panToLatLonBoundingBox ( lat , lon , minlat , maxlat , minlon , maxlon , wkt ) {
vectorLayer . destroyFeatures ();
var proj_EPSG4326 = new OpenLayers . Projection ( " EPSG:4326 " );
var proj_map = map . getProjectionObject ();
map . zoomToExtent ( new OpenLayers . Bounds ( minlon , minlat , maxlon , maxlat ) . transform ( proj_EPSG4326 , proj_map ));
var lonLat = new OpenLayers . LonLat ( lon , lat ) . transform ( proj_EPSG4326 , proj_map );
2012-04-01 04:40:50 +04:00
map . panTo ( lonLat , < ? php echo $iZoom ?> );
2010-11-01 18:21:15 +03:00
2012-11-10 01:35:45 +04:00
if ( wkt )
2010-11-01 18:21:15 +03:00
{
2012-11-10 01:35:45 +04:00
var freader = new OpenLayers . Format . WKT ({
'internalProjection' : proj_map ,
'externalProjection' : proj_EPSG4326
});
var feature = freader . read ( wkt );
if ( feature )
{
feature . style = {
strokeColor : " #75ADFF " ,
fillColor : " #F0F7FF " ,
strokeWidth : 2 ,
strokeOpacity : 0.75 ,
fillOpacity : 0.75 ,
pointRadius : 100
};
vectorLayer . addFeatures ([ feature ]);
}
2010-11-01 18:21:15 +03:00
}
}
function round ( v , n )
{
n = Math . pow ( 10 , n );
return Math . round ( v * n ) / n ;
}
function floor ( v , n )
{
n = Math . pow ( 10 , n );
return Math . floor ( v * n ) / n ;
}
function ceil ( v , n )
{
n = Math . pow ( 10 , n );
return Math . ceil ( v * n ) / n ;
}
function mapEventMove () {
var proj = new OpenLayers . Projection ( " EPSG:4326 " );
var bounds = map . getExtent ();
bounds = bounds . transform ( map . getProjectionObject (), proj );
$ ( 'viewbox' ) . value = floor ( bounds . left , 2 ) + ',' + ceil ( bounds . top , 2 ) + ',' + ceil ( bounds . right , 2 ) + ',' + floor ( bounds . bottom , 2 );
}
function init () {
handleResize ();
map = new OpenLayers . Map ( " map " , {
controls : [
new OpenLayers . Control . Navigation (),
new OpenLayers . Control . PanZoomBar (),
new OpenLayers . Control . MousePosition (),
new OpenLayers . Control . Attribution ()],
maxExtent : new OpenLayers . Bounds ( - 20037508.34 , - 20037508.34 , 20037508.34 , 20037508.34 ),
maxResolution : 156543.0399 ,
numZoomLevels : 19 ,
units : 'm' ,
projection : new OpenLayers . Projection ( " EPSG:900913 " ),
displayProjection : new OpenLayers . Projection ( " EPSG:4326 " ),
eventListeners : {
2012-02-04 11:53:02 +04:00
" moveend " : mapEventMove
2010-11-01 18:21:15 +03:00
}
} );
2012-11-17 01:22:04 +04:00
map . addLayer ( new OpenLayers . Layer . OSM .< ? php echo CONST_Tile_Default ; ?> ("Default"));
2010-11-01 18:21:15 +03:00
var layer_style = OpenLayers . Util . extend ({}, OpenLayers . Feature . Vector . style [ 'default' ]);
layer_style . fillOpacity = 0.2 ;
layer_style . graphicOpacity = 1 ;
vectorLayer = new OpenLayers . Layer . Vector ( " Points " , { style : layer_style });
map . addLayer ( vectorLayer );
// var lonLat = new OpenLayers.LonLat(<?php echo $fLon ?>, <?php echo $fLat ?>).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
// map.setCenter (lonLat, <?php echo $iZoom ?>);
}
function setfocus ( field_id ) {
$ ( field_id ) . focus ()
}
</ script >
</ head >
< body onload = " setfocus('q'); " >
< div id = " seachheaderfade1 " ></ div >< div id = " seachheaderfade2 " ></ div >< div id = " seachheaderfade3 " ></ div >< div id = " seachheaderfade4 " ></ div >
< div id = " seachheader " >
2012-02-12 16:01:24 +04:00
< form accept - charset = " UTF-8 " action = " <?php echo CONST_Website_BaseURL; ?>search.php " method = " get " >
2012-11-17 01:22:04 +04:00
< table border = " 0 " width = " 100% " summary = " header " >
2010-11-01 18:21:15 +03:00
< tr >
2012-11-17 01:22:04 +04:00
< td valign = " middle " style = " width:30px; " >< img alt = " logo " src = " images/logo.gif " /></ td >
< td valign = " middle " style = " width:400px; " >< input id = " q " name = " q " value = " <?php echo htmlspecialchars( $sQuery );
2013-01-15 02:29:54 +04:00
?> " style="width:270px;" /><input type="text" id="viewbox" style="width:120px;" name="viewbox" /></td>
2012-11-17 01:22:04 +04:00
< td style = " width:80px; " >< input type = " submit " value = " Search " /></ td >
< ? php if ( CONST_Search_AreaPolygons ) { ?> <td style="width:100px;"><input type="checkbox" value="1" name="polygon" <?php if ($bAsText) echo "checked='checked'"; ?>/> Highlight</td>
2010-11-01 18:21:15 +03:00
< td style = " text-align:right; " > Data : < ? php echo $sDataDate ; ?> </td>
< td style = " text-align:right; " >
< a href = " http://wiki.openstreetmap.org/wiki/Nominatim " target = " _blank " > Documentation </ a > | < a href = " http://wiki.openstreetmap.org/wiki/Nominatim/FAQ "
target = " _blank " > FAQ </ a ></ td >
2012-11-17 01:22:04 +04:00
< ? php } ?> <td style="text-align:right;"><?php if ($sQuery) { ?><input type="button" value="Report Problem With Results" onclick="$('report').style.visibility=($('report').style.visibility=='hidden'?'visible':'hidden')"/><?php } ?></td>
2010-11-01 18:21:15 +03:00
</ tr >
</ table >
</ form >
</ div >
< ? php
2013-08-27 20:21:20 +04:00
if ( $sQuery )
2010-11-01 18:21:15 +03:00
{
?>
< div id = " searchresultsfade1 " ></ div >< div id = " searchresultsfade2 " ></ div >< div id = " searchresultsfade3 " ></ div >< div id = " searchresultsfade4 " ></ div >
< div id = " searchresults " >
< ? php
if ( $sSuggestionURL )
{
echo '<div class="more"><b>Suggest: </b><a href="' . $sSuggestionURL . '"><b>' . $sSuggestion . '</b></a></div>' ;
}
foreach ( $aSearchResults as $iResNum => $aResult )
{
if ( $aResult [ 'aBoundingBox' ])
{
echo '<div class="result" onClick=\'panToLatLonBoundingBox(' . $aResult [ 'lat' ] . ', ' . $aResult [ 'lon' ];
echo ', ' . $aResult [ 'aBoundingBox' ][ 0 ];
echo ', ' . $aResult [ 'aBoundingBox' ][ 1 ];
echo ', ' . $aResult [ 'aBoundingBox' ][ 2 ];
echo ', ' . $aResult [ 'aBoundingBox' ][ 3 ];
2012-11-10 01:35:45 +04:00
if ( isset ( $aResult [ 'astext' ])) echo ', "' . $aResult [ 'astext' ] . '"' ;
echo " );'> \n " ;
2010-11-01 18:21:15 +03:00
}
elseif ( isset ( $aResult [ 'zoom' ]))
{
echo '<div class="result" onClick="panToLatLonZoom(' . $aResult [ 'lat' ] . ', ' . $aResult [ 'lon' ] . ', ' . $aResult [ 'zoom' ] . ');">' ;
}
else
{
echo '<div class="result" onClick="panToLatLon(' . $aResult [ 'lat' ] . ', ' . $aResult [ 'lon' ] . ');">' ;
}
2012-11-17 01:22:04 +04:00
echo ( isset ( $aResult [ 'icon' ]) ? '<img alt="icon" src="' . $aResult [ 'icon' ] . '"/>' : '' );
2010-11-01 18:21:15 +03:00
echo ' <span class="name">' . $aResult [ 'name' ] . '</span>' ;
2012-07-22 06:45:45 +04:00
echo ' <span class="latlon">' . round ( $aResult [ 'lat' ], 3 ) . ',' . round ( $aResult [ 'lon' ], 3 ) . '</span>' ;
2010-11-01 18:21:15 +03:00
echo ' <span class="place_id">' . $aResult [ 'place_id' ] . '</span>' ;
2011-04-05 18:51:32 +04:00
if ( isset ( $aResult [ 'label' ]))
echo ' <span class="type">(' . $aResult [ 'label' ] . ')</span>' ;
else
echo ' <span class="type">(' . ucwords ( str_replace ( '_' , ' ' , $aResult [ 'type' ])) . ')</span>' ;
2010-11-01 18:21:15 +03:00
echo ' <span class="details">(<a href="details.php?place_id=' . $aResult [ 'place_id' ] . '">details</a>)</span>' ;
echo '</div>' ;
}
if ( sizeof ( $aSearchResults ))
{
if ( $sMoreURL )
{
2012-11-17 01:22:04 +04:00
echo '<div class="more"><a href="' . htmlentities ( $sMoreURL ) . '">Search for more results</a></div>' ;
2010-11-01 18:21:15 +03:00
}
}
else
{
echo '<div class="noresults">No search results found</div>' ;
}
?>
< div class = " disclaimer " > Addresses and postcodes are approximate
2012-11-17 01:22:04 +04:00
< input type = " button " value = " Report Problem " onclick = " $ ('report').style.visibility=( $ ('report').style.visibility=='hidden'?'visible':'hidden') " />
2010-11-01 18:21:15 +03:00
</ div >
</ div >
< ? php
}
?>
< div id = " map " ></ div >
< div id = " report " style = " visibility:hidden; " >< div style = " width:600px;margin:auto;margin-top:60px; " >
< h2 > Report a problem </ h2 >
< p > Before reporting problems please read the < a href = " http://wiki.openstreetmap.org/wiki/Nominatim " > user documentation </ a > and < a
href = " http://wiki.openstreetmap.org/wiki/Nominatim/FAQ " > FAQ </ a >. If your problem relates to the address of a particular search result please use the 'details' link
to check how the address was generated before reporting a problem .</ p >
< p > Please use < a href = " http://trac.openstreetmap.org/newticket?component=nominatim " > trac . openstreetmap . org </ a > to report problems
making sure to set
2012-11-17 01:22:04 +04:00
the component to 'nominatim' . You can search for existing bug reports < a href = " http://trac.openstreetmap.org/query?status=new&status=assigned&status=reopened&component=nominatim&order=priority " > here </ a >.</ p >
2010-11-01 18:21:15 +03:00
< p > Please ensure that you include a full description of the problem , including the search query that you used , the problem with the result and , if
the problem relates to missing data , the osm id of the item that is missing . Problems that contain enough detail are likely to get looked at before ones that
require significant research !</ p >
</ div >
2013-08-27 20:21:20 +04:00
2010-11-01 18:21:15 +03:00
<!--
< p > Please use this form to report problems with the search results . Of particular interest are items missing , but please also use this form to
report any other problems .</ p >
< p > If your problem relates to the address of a particular search result please use the 'details' link to check how the address was generated before
reporting a problem .</ p >
< p > If you are reporting a missing result please ( if possible ) include the OSM ID of the item you where expecting ( i . e . node 422162 ) </ p >
< form method = " post " >
< table >
< tr >< th > Your Query :</ th >< td >< input type = " hidden " name = " report:query " value = " <?php echo htmlspecialchars( $sQuery ); ?> " style = " width:500px; " >< ? php echo htmlspecialchars ( $sQuery ); ?> </td></tr>
< tr >< th > Your Email Address ( opt ) :</ th >< td >< input type = " text " name = " report:email " value = " " style = " width:500px; " ></ td ></ tr >
< tr >< th > Description of Problem :</ th >< td >< textarea name = " report:description " style = " width:500px;height:200px; " ></ textarea ></ td ></ tr >
< tr >< td colspan = " 2 " class = " button " >< input type = " button " value = " Cancel " onclick = " $ ('report').style.visibility='hidden' " >< input type = " submit " value = " Report " ></ td ></ tr >
</ table >
</ form >
< h2 > Known Problems </ h2 >
< ul >
< li > Countries where missed out of the index </ li >
< li > Area Polygons relate to the search area - not the address area which would make more sense </ li >
</ ul >
-->
</ div >
< script type = " text/javascript " >
init ();
< ? php
foreach ( $aSearchResults as $iResNum => $aResult )
{
if ( $aResult [ 'aBoundingBox' ])
{
echo 'panToLatLonBoundingBox(' . $aResult [ 'lat' ] . ', ' . $aResult [ 'lon' ];
echo ', ' . $aResult [ 'aBoundingBox' ][ 0 ];
echo ', ' . $aResult [ 'aBoundingBox' ][ 1 ];
echo ', ' . $aResult [ 'aBoundingBox' ][ 2 ];
echo ', ' . $aResult [ 'aBoundingBox' ][ 3 ];
2012-11-10 01:35:45 +04:00
if ( isset ( $aResult [ 'astext' ])) echo " , ' " . $aResult [ 'astext' ] . " ' " ;
2010-11-01 18:21:15 +03:00
echo ');' . " \n " ;
}
else
{
echo 'panToLatLonZoom(' . $fLat . ', ' . $fLon . ', ' . $iZoom . ');' . " \n " ;
}
break ;
}
if ( ! sizeof ( $aSearchResults ))
{
echo 'panToLatLonZoom(' . $fLat . ', ' . $fLon . ', ' . $iZoom . ');' . " \n " ;
}
?>
</ script >
</ body >
</ html >