<!DOCTYPE html>
<html lang="en">
<head>
+ <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<title>OpenStreetMap Nominatim</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel="icon" type="image/png" href="/assets/images/favicon-194x194.png" sizes="194x194" />
- <link rel="icon" type="image/png" href="/assets/images/favicon-16x16.png" sizes="16x16" />
+ <link rel="icon" type="image/png" href="assets/images/favicon-194x194.png" sizes="194x194" />
+ <link rel="icon" type="image/png" href="assets/images/favicon-16x16.png" sizes="16x16" />
<link href="assets/css/leaflet.css" rel="stylesheet" />
<link href="assets/css/Control.MiniMap.min.css" rel="stylesheet" />
- <link href="assets/css/bootstrap-theme.min.css" rel="stylesheet" />
<link href="assets/css/bootstrap.min.css" rel="stylesheet" />
<link href="assets/css/common.css" rel="stylesheet" />
<link href="assets/css/search.css" rel="stylesheet" type="text/css" />
<link href="assets/css/details.css" rel="stylesheet" type="text/css" />
</head>
-<body id="details-page">
+<body id="BODYID">
- <div id="error-overlay">
- You need Javascript enabled to view this page.
- </div>
+ <div id="error-overlay"></div>
<header class="container-fluid">
<div class="row">
- <div class="col-xs-4">
+ <div class="col-4">
<div class="brand">
- <a href="/">
+ <a href="search.html">
<img alt="logo" src="assets/images/osm_logo.120px.png" width="30" height="30"/>
<h1>Nominatim</h1>
</a>
</div>
</div>
- <div id="last-updated" class="col-xs-4 text-center">
- Data from <a id="api-request-link" href="">API request</a>
- <br>
- Data last updated:
- <span id="data-date"></span>
+ <div class="col-4">
+ <div id="last-updated" class="text-center">
+ <div id="loading">loading...</div>
+ <div id="api-request">
+ Data from <a href="">API request</a>
+ <span id="api-request-debug">(<a href="">debug output</a>)</span>
+ </div>
+ Data last updated: <span id="data-date"></span>
+ </div>
</div>
- <div class="col-xs-4 text-right">
- <div class="btn-group">
- <button class="dropdown-toggle btn btn-sm btn-default" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
- About & Help <span class="caret"></span>
+ <div class="col-4 text-right">
+ <div class="dropdown">
+ <button class="dropdown-toggle btn btn-sm btn-outline-secondary" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
+ About & Help
</button>
- <ul class="dropdown-menu dropdown-menu-right">
- <li><a href="https://nominatim.org/release-docs/develop/api/Overview/" target="_blank">API Reference</a></li>
- <li><a href="https://nominatim.org/release-docs/develop/api/Faq/" target="_blank">FAQ</a></li>
- <li><a href="https://help.openstreetmap.org/tags/nominatim/">OpenStreetMap Help</a></li>
- <li><a href="https://github.com/openstreetmap/Nominatim">Nominatim on Github</a></li>
- <li role="separator" class="divider"></li>
- <li><a href="#" class="" data-toggle="modal" data-target="#report-modal">Report problem with results</a></li>
- </ul>
+ <div class="dropdown-menu dropdown-menu-right">
+ <a class="dropdown-item" href="https://nominatim.org/release-docs/develop/api/Overview/" target="_blank">API Reference</a>
+ <a class="dropdown-item" href="https://nominatim.org/release-docs/develop/api/Faq/" target="_blank">FAQ</a>
+ <a class="dropdown-item" href="https://help.openstreetmap.org/tags/nominatim/">OpenStreetMap Help</a>
+ <a class="dropdown-item" href="https://github.com/osm-search/Nominatim">Nominatim on Github</a>
+ <a class="dropdown-item" href="https://github.com/osm-search/nominatim-ui">This frontend on Github</a>
+ <div class="dropdown-divider"></div>
+ <a class="dropdown-item" href="#" data-toggle="modal" data-target="#report-modal">Report problem with results</a>
+ </div>
</div>
</div>
</div>
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Report a problem</h4>
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
</div>
<div class="modal-body">
<p>
to check how the address was generated before reporting a problem.
</p>
<p>
- Use <a target="_blank" href="https://github.com/openstreetmap/Nominatim/issues">Nominatim issues on github</a>
+ Use <a target="_blank" href="https://github.com/osm-search/Nominatim/issues">Nominatim issues on github</a>
to report problems.
</p>
<p>
</p>
</div>
<div class="modal-footer">
- <button type="button" class="btn btn-default" data-dismiss="modal">OK</button>
+ <button type="button" class="btn btn-outline-secondary" data-dismiss="modal">OK</button>
</div>
</div>
</div>
</footer>
<script src="assets/js/jquery.min.js"></script>
- <script src="assets/js/bootstrap.min.js"></script>
+ <script src="assets/js/bootstrap.bundle.min.js"></script>
<script src="assets/js/leaflet.js"></script>
<script src="assets/js/Control.MiniMap.min.js"></script>
<script src="assets/js/handlebars.min.js"></script>
<script src="handlebar_helpers.js"></script>
<script src="assets/js/nominatim-ui.js"></script>
+<script id="searchpage-template" type="text/x-handlebars-template">
+{{#*inline "partial_one_result"}}
+ <div class="result" data-position="{{iResNum}}">
+ {{formatMapIcon aResult}}
+
+ <span class="name">{{aResult.display_name}}</span>
+ <span class="type">({{formatLabel aResult}})</span>
+ <p class="coords">{{aResult.lat}},{{aResult.lon}}</p>
+
+ <a class="details btn btn-outline-secondary btn-sm"
+ href="details.html?osmtype={{shortOSMType aResult.osm_type}}&osmid={{aResult.osm_id}}">details</a>
+ </div>
+{{/inline}}
+
+<div class="top-bar">
+ <ul class="nav nav-tabs">
+ <li class="nav-item">
+ <a class="nav-link {{#unless hStructured}}active{{/unless}}" data-toggle="tab" href="#simple">simple</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link {{#if hStructured}}active{{/if}}" data-toggle="tab" href="#structured">structured</a>
+ </li>
+ <div class="search-type-link">
+ <a id="switch-to-reverse" href="/reverse.html">reverse search</a>
+ </div>
+ </ul>
+ <div class="tab-content p-2">
+ <div class="tab-pane {{#unless hStructured}}active{{/unless}}" id="simple" role="tabpanel">
+ <form class="form-inline" role="search" accept-charset="UTF-8" action="">
+ <input id="q"
+ name="q"
+ type="text"
+ class="form-control form-control-sm"
+ placeholder="Search"
+ value="{{sQuery}}" />
+
+ <div class="form-group search-button-group">
+ <button type="submit" class="btn btn-primary btn-sm mx-1">Search</button>
+ <input type="hidden" name="viewbox" value="{{sViewBox}}" />
+ <div class="form-check form-check-inline">
+ <input type="checkbox" class="form-check-input"
+ id="use_viewbox" {{#if sViewBox}}checked="checked"{{/if}}>
+ <label class="form-check-label" for="use_viewbox">apply viewbox</label>
+ </div>
+ </div>
+ </form>
+ </div>
+ <div class="tab-pane {{#if hStructured}}active{{/if}}" id="structured" role="tabpanel">
+ <form class="form-inline" role="search" accept-charset="UTF-8" action="">
+ <input name="street" type="text" class="form-control form-control-sm mr-1"
+ placeholder="House number/Street"
+ value="{{hStructured.street}}" />
+ <input name="city" type="text" class="form-control form-control-sm mr-1"
+ placeholder="City"
+ value="{{hStructured.city}}" />
+ <input id="county" name="county" type="text" class="form-control form-control-sm mr-1"
+ placeholder="County"
+ value="{{hStructured.county}}" />
+ <input name="state" type="text" class="form-control form-control-sm mr-1"
+ placeholder="State"
+ value="{{hStructured.state}}" />
+ <input name="country" type="text" class="form-control form-control-sm mr-1"
+ placeholder="Country"
+ value="{{hStructured.country}}" />
+ <input name="postalcode" type="text" class="form-control form-control-sm mr-1"
+ placeholder="Postal Code"
+ value="{{hStructured.postalcode}}" />
+
+ <div class="form-group search-button-group">
+ <button type="submit" class="btn btn-primary btn-sm mx-1">Search</button>
+ <input type="hidden" name="viewbox" value="{{sViewBox}}" />
+ <div class="form-check form-check-inline">
+ <input type="checkbox" class="form-check-input"
+ id="use_viewbox" {{#if sViewBox}}checked="checked"{{/if}}>
+ <label class="form-check-label" for="use_viewbox">apply viewbox</label>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div> <!-- /tab-content -->
+</div> <!-- /top-bar -->
+
+<div id="content">
+
+ {{#if bSearchRan}}
+ <div id="searchresults" class="sidebar">
+ {{#each aSearchResults as |aResult|}}
+ {{>partial_one_result iResNum=@index aResult=aResult env=env}}
+ {{/each}}
+
+ {{#if aSearchResults}}
+ {{#if sMoreURL}}
+ <div class="more">
+ <a class="btn btn-primary" href="{{sMoreURL}}">
+ Search for more results
+ </a>
+ </div>
+ {{/if}}
+ {{else}}
+ <div class="noresults">No search results found</div>
+ {{/if}}
+ </div>
+
+ {{else}}
+
+ <div id="intro" class="sidebar">
+ <h2>Welcome to Nominatim</h2>
+
+ <p>
+ Nominatim is a search engine for
+ <a href="https://www.openstreetmap.org">OpenStreetMap</a> data. This
+ is the debugging interface. You may search for a name or address
+ (forward search) or look up data by its geographic coordinate (reverse
+ search). Each result comes with a link to a details page where you
+ can inspect what data about the object is saved in the database and
+ investigate how the address of the object has been computed.
+ </p>
+
+ For more information visit the
+ <a href="https://nominatim.org">Nominatim home page</a>.
+ </div>
+
+ {{/if}}
+
+ <div id="map-wrapper">
+ <div id="map-position">
+ <div id="map-position-inner"></div>
+ <div id="map-position-close"><a href="#">hide</a></div>
+ </div>
+ <div id="map"></div>
+ </div>
+</div>
+</script>
+<script id="reversepage-template" type="text/x-handlebars-template">
+
+{{#*inline "partial_one_result"}}
+ <div class="result" data-position="{{iResNum}}">
+ {{formatMapIcon aResult}}
+
+ <span class="name">{{aResult.display_name}}</span>
+ <span class="type">{{formatLabel aResult}}</span>
+ <p class="coords">{{aResult.lat}},{{aResult.lon}}</p>
+
+ <a class="details btn btn-outline-secondary btn-sm"
+ href="details.html?osmtype={{shortOSMType aResult.osm_type}}&osmid={{aResult.osm_id}}">details</a>
+ </div>
+{{/inline}}
+
+<div class="top-bar">
+ <form class="form-inline" role="search" accept-charset="UTF-8" action="">
+ <div class="form-group">
+ <input name="format" type="hidden" value="html">
+ <label>lat</label>
+ <input name="lat"
+ type="text"
+ class="form-control form-control-sm"
+ placeholder="latitude"
+ value="{{fLat}}" />
+ <a id="switch-coords" class="btn btn-outline-secondary btn-sm" title="switch lat and lon"><></a>
+ <label>lon</label>
+ <input name="lon"
+ type="text"
+ class="form-control form-control-sm"
+ placeholder="longitude"
+ value="{{fLon}}" />
+ <label>max zoom</label>
+ <select name="zoom" class="form-control form-control-sm" value="{{iZoom}}">
+ {{zoomLevels iZoom}}
+ </select>
+ <button type="submit" class="btn btn-primary btn-sm mx-1">
+ Search
+ </button>
+ </div>
+ <div class="search-type-link">
+ <a href="search.html">forward search</a>
+ </div>
+ </form>
+</div>
+
+<div id="content">
+ {{#if aPlace}}
+ <div id="searchresults" class="sidebar">
+ {{>partial_one_result iResNum=0 aResult=aPlace env=env}}
+ </div>
+ {{else}}
+ <div id="intro" class="sidebar">
+ Search for coordinates or click anywhere on the map.
+ </div>
+ {{/if}}
+
+ <div id="map-wrapper">
+ <div id="map-position">
+ <div id="map-position-inner"></div>
+ <div id="map-position-close"><a href="#">hide</a></div>
+ </div>
+ <div id="map"></div>
+ </div>
+</div>
+</script>
<script id="detailspage-template" type="text/x-handlebars-template">
{{#*inline "partial_details_one_row"}}
- <tr class="{{isaddresses_unused this}}">
+ <tr class="{{#unless bAddressLineUsed}}notused{{/unless}}">
<td class="name">
{{#if this.localname}}
{{this.localname}}
<span class="noname">No Name</span>
{{/if}}
</td>
- <td>{{this.class}}:{{this.type}}</td>
+ <td>{{formatPlaceType this}}</td>
<td>{{osmLink this}}</td>
<td>{{this.rank_address}}</td>
<td>{{formatAdminLevel this.admin_level}}</td>
- <td>{{formatDistance this.distance}}</td>
+ <td>{{formatDistance this.distance bDistanceInMeters}}</td>
<td>{{detailsPermaLink this 'details >'}}</td>
</tr>
{{/inline}}
</h1>
</div>
<div class="col-sm-2 text-right">
- {{formatMapIcon aPlace.icon}}
+ {{formatMapIcon aPlace}}
</div>
</div>
<div class="row">
<div class="row">
<div class="col-md-12">
<h2>Address</h2>
- <table id="address" class="table table-striped table-responsive">
+ <table id="address" class="table table-striped table-small">
<thead>
<tr>
<th>Local name</th>
<tbody>
{{#if aPlace.address}}
{{#each aPlace.address}}
- {{> partial_details_one_row}}
+ {{> partial_details_one_row bDistanceInMeters=false bAddressLineUsed=this.isaddress}}
{{/each}}
{{/if}}
{{#if aPlace.linked_places}}
{{> partial_h2 'Linked Places'}}
{{#each aPlace.linked_places}}
- {{> partial_details_one_row}}
+ {{> partial_details_one_row bDistanceInMeters=true bAddressLineUsed=true}}
{{/each}}
{{/if}}
{{#each aPlace.hierarchy as |lines type|}}
{{> partial_h3 type}}
{{#each lines}}
- {{> partial_details_one_row}}
+ {{> partial_details_one_row bDistanceInMeters=true bAddressLineUsed=true}}
{{/each}}
{{/each}}
{{else}}
<tr>
<td>
- <a class="btn btn-default btn-xs"
+ <a class="btn btn-outline-secondary btn-sm"
href="{{base_url}}&hierarchy=1">display child places</a>
</td>
</tr>
</div>
</div>
</div></script>
+<script id="deletable-template" type="text/x-handlebars-template">
+<div class="container">
+ <div class="row">
+ <div class="col-sm-12">
+ <h1>Deletable</h1>
+
+ <p>
+ {{aPolygons.length}} objects have been deleted in OSM but are still in the Nominatim database.
+ </p>
+
+ <table class="table table-striped table-hover">
+ <thead>
+ <th>Place id</th>
+ <th>Country Code</th>
+ <th>Name</th>
+ <th>OSM id</th>
+ <th>OSM type</th>
+ <th>Class</th>
+ <th>Type</th>
+ </thead>
+ <tbody>
+ {{#each aPolygons}}
+ <tr>
+ <td>{{detailsLink this place_id}}</td>
+ <td>{{country_code}}</td>
+ <td>{{name}}</td>
+ <td>{{osmLink this}}</td>
+ <td>{{osm_type}}</td>
+ <td>{{class}}</td>
+ <td>{{type}}</td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+
+
+ </div>
+ </div>
+</div
+
+</script>
+<script id="polygons-template" type="text/x-handlebars-template">
+<div class="container">
+ <div class="row">
+ <div class="col-sm-12">
+ <h1>Broken polygons</h1>
+
+ <p>
+ Total number of broken polygons: {{aPolygons.length}}.
+ </p>
+
+ <table class="table table-striped table-hover">
+ <thead>
+ <th>OSM type</th>
+ <th>OSM id</th>
+ <th>Class</th>
+ <th>Type</th>
+ <th>Name</th>
+ <th>Country Code</th>
+ <th>Error message</th>
+ <th>Updated</th>
+ <th> </th>
+ </thead>
+ <tbody>
+ {{#each aPolygons}}
+ <tr>
+ <td>{{osm_type}}</td>
+ <td>{{osmLink this}}</td>
+ <td>{{class}}</td>
+ <td>{{type}}</td>
+ <td>{{name}}</td>
+ <td>{{country_code}}</td>
+ <td>{{errormessage}}</td>
+ <td>{{updated}}</td>
+ <td>
+ <a href="http://localhost:8111/import?url=https://www.openstreetmap.org/api/0.6/{{formatOSMType osm_type}}/{{osm_id}}/full" target="josm">josm</a>
+ </td>
+ </tr>
+ {{/each}}
+ </tbody>
+ </table>
+
+
+ </div>
+ </div>
+</div
+
+</script>
</body>
</html>