<?php
- header("content-type: text/html; charset=UTF-8");
+ header("content-type: text/html; charset=UTF-8");
?>
-<html>
- <head>
- <title>OpenStreetMap Nominatim: <?php echo $aPointDetails['localname'];?></title>
- <style>
-body {
- margin:0px;
- padding:16px;
- background:#ffffff;
- height: 100%;
- font: normal 12px/15px arial,sans-serif;
-}
-.line{
- margin-left:20px;
-}
-.name{
- font-weight: bold;
-}
-.notused{
- color:#ddd;
-}
-.noname{
- color:#800;
-}
-#map {
- width:500px;
- height:500px;
- border: 2px solid #666;
- float: right;
-}
- </style>
- <script src="js/OpenLayers.js"></script>
- <script src="js/tiles.js"></script>
- <script type="text/javascript">
-
- var map;
-
- function init() {
- map = new OpenLayers.Map ("map", {
- controls:[
- new OpenLayers.Control.Permalink(),
- new OpenLayers.Control.Navigation(),
- new OpenLayers.Control.PanZoomBar(),
- new OpenLayers.Control.MouseDefaults(),
- 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")
- } );
- map.addLayer(new OpenLayers.Layer.OSM.<?php echo CONST_Tile_Default;?>("Default",
- { attribution : '© <a target="_parent" href="http://www.openstreetmap.org">OpenStreetMap</a> and contributors, under an <a target="_parent" href="http://www.openstreetmap.org/copyright">open license</a>'}));
-
- var layer_style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
- layer_style.fillOpacity = 0.2;
- layer_style.graphicOpacity = 0.2;
-
- vectorLayer = new OpenLayers.Layer.Vector("Points", {style: layer_style});
- map.addLayer(vectorLayer);
-
- var proj_EPSG4326 = new OpenLayers.Projection("EPSG:4326");
- var proj_map = map.getProjectionObject();
-
- freader = new OpenLayers.Format.WKT({
- 'internalProjection': proj_map,
- 'externalProjection': proj_EPSG4326
- });
-
- var bounds;
- <?php if ($aPointDetails['prevgeom']) { ?>
- var feature = freader.read('<?php echo $aPointDetails['prevgeom'];?>');
- if (feature) {
- bounds = feature.geometry.getBounds();
+<?php include(CONST_BasePath.'/lib/template/includes/html-header.php'); ?>
+ <link href="css/common.css" rel="stylesheet" type="text/css" />
+ <link href="css/details.css" rel="stylesheet" type="text/css" />
+</head>
+
- }
- feature.style = {
- strokeColor: "#777777",
- fillColor: "#F0F0F0",
- strokeWidth: 2,
- strokeOpacity: 0.75,
- fillOpacity: 0.75,
- strokeDashstyle: "longdash"
- };
- vectorLayer.addFeatures([feature]);
- <?php } ?>
-
- <?php if ($aPointDetails['newgeom']) { ?>
- feature = freader.read('<?php echo $aPointDetails['newgeom'];?>');
- if (feature) {
- if (!bounds) {
- bounds = feature.geometry.getBounds();
- }
- else
- {
- bounds.extend(feature.geometry.getBounds());
- }
- }
- feature.style = {
- strokeColor: "#75ADFF",
- fillColor: "#FFF7F0",
- strokeWidth: 2,
- strokeOpacity: 0.75,
- fillOpacity: 0.75
- };
- vectorLayer.addFeatures([feature]);
- <?php } ?>
-
- <?php if (isset($aPointDetails['error_x'])) { ?>
- var pt = new OpenLayers.Geometry.Point(<?php echo $aPointDetails['error_x'].','.$aPointDetails['error_y'];?>);
- pt = pt.transform(proj_EPSG4326, proj_map);
- feature = new OpenLayers.Feature.Vector(pt, null,
- {
- graphicName : "x",
- fillColor: "#FF0000",
- graphic : true,
- pointRadius: 6
- });
- vectorLayer.addFeatures([feature]);
- <?php } ?>
-
-
- map.zoomToExtent(bounds);
-
- }
-
- </script>
- </head>
- <body onload="init();">
- <div id="map"></div>
- <h1><?php echo $aPointDetails['localname'] ?></h1>
- <div class="locationdetails">
- <div>Type: <span class="type"><?php echo $aPointDetails['class'].':'.$aPointDetails['type'];?></span></div>
-
<?php
- $sOSMType = ($aPointDetails['osm_type'] == 'N'?'node':($aPointDetails['osm_type'] == 'W'?'way': ($aPointDetails['osm_type'] == 'R'?'relation':'')));
- if ($sOSMType) echo ' <div>OSM: <span class="osm"><span class="label"></span>'.$sOSMType.' <a href="http://www.openstreetmap.org/browse/'.$sOSMType.'/'.$aPointDetails['osm_id'].'">'. $aPointDetails['osm_id'].'</a></span></div>';
+
+ function osmMapUrl($aFeature)
+ {
+ if (isset($sFeature['error_x']) && isset($sFeature['error_y']))
+ {
+ $sBaseUrl = '//www.openstreetmap.org/';
+ $sOSMType = formatOSMType($aFeature['osm_type'], false);
+ if ($sOSMType)
+ {
+ $sBaseUrl += $sOSMType.'/'.$aFeature['osm_id'];
+ }
+
+ return '<a href="'.$sBaseUrl.'?mlat='.$aFeature['error_y'].'&mlon='.$aFeature['error_x'].'">view on osm.org</a>';
+ }
+ return '';
+ }
+
+ function josm_edit_url($aFeature)
+ {
+ $fWidth = 0.0002;
+ $sLon = $aFeature['error_x'];
+ $sLat = $aFeature['error_y'];
+
+ if (isset($sLat))
+ {
+ return "http://localhost:8111/load_and_zoom?left=".($sLon-$fWidth)."&right=".($sLon+$fWidth)."&top=".($sLat+$fWidth)."&bottom=".($sLat-$fWidth);
+ }
+
+ $sOSMType = formatOSMType($aFeature['osm_type'], false);
+ if ($sOSMType)
+ {
+ return 'http://localhost:8111/import?url=http://www.openstreetmap.org/api/0.6/'.$sOSMType.'/'.$aFeature['osm_id'].'/full';
+ // Should be better to load by object id - but this doesn't seem to zoom correctly
+ // return " <a href=\"http://localhost:8111/load_object?new_layer=true&objects=".strtolower($aFeature['osm_type']).$sOSMID."\" target=\"josm\">Remote Control (JOSM / Merkaartor)</a>";
+ }
+ return '';
+ }
+
+ function potlach_edit_url($aFeature)
+ {
+ $fWidth = 0.0002;
+ $sLat = $aFeature['error_y'];
+ $sLon = $aFeature['error_x'];
+
+ if (isset($sLat))
+ {
+ return "//www.openstreetmap.org/edit?editor=potlatch2&bbox=".($sLon-$fWidth).",".($sLat-$fWidth).",".($sLon+$fWidth).",".($sLat+$fWidth);
+ }
+ return '';
+ }
+
+
+
?>
- <p>This object has an invalid geometry.</p>
- <p><b>Details:</b> <?php
+<body id="details-page">
+ <div class="container">
+ <div class="row">
+ <div class="col-md-6">
+
+
+ <h1><?php echo $aPointDetails['localname'] ?></h1>
+ <div class="locationdetails">
+ <h2 class="bg-danger">This object has an invalid geometry.</h2>
+
+ <div>
+ Type: <span class="type"><?php echo $aPointDetails['class'].':'.$aPointDetails['type'];?></span>
+ </div>
+
+ <div>
+ OSM: <span class="label"><?php echo osmLink($aPointDetails); ?><span>
+ </div>
+
+
+ <h4>Error</h4>
+ <p>
+ <?php echo $aPointDetails['errormessage']?$aPointDetails['errormessage']:'unknown'; ?>
+ </p>
+ <?php echo osmMapUrl($aPointDetails); ?>
+
+ <h4>Edit</h4>
+ <ul>
+ <?php if (josm_edit_url($aPointDetails)) { ?>
+ <li><a href="<?php echo josm_edit_url($aPointDetails); ?>" target="josm">Remote Control (JOSM / Merkaartor)</a></li>
+ <?php } ?>
+ <?php if (potlach_edit_url($aPointDetails)) { ?>
+ <li><a href="<?php echo potlach_edit_url($aPointDetails); ?>" target="potlatch2">Potlatch 2</a></li>
+ <?php } ?>
+ </ul>
+ </div>
+ </div>
+ <div class="col-md-6">
+ <div id="map"></div>
+ </div>
+
+ </div>
+
+
+ <script type="text/javascript">
-$sVal = $aPointDetails['errormessage'];
-$sOSMType = ($aPointDetails['osm_type'] == 'N'?'node':($aPointDetails['osm_type'] == 'W'?'way':($aPointDetails['osm_type'] == 'R'?'relation':'')));
-$sOSMID = $aPointDetails['osm_id'];
+ var nominatim_result = {
+ outlinestring: '<?php echo $aPointDetails['outlinestring'];?>',
+ lon: <?php echo isset($aPointDetails['error_x']) ? $aPointDetails['error_x'] : 0; ?>,
+ lat: <?php echo isset($aPointDetails['error_y']) ? $aPointDetails['error_y'] : 0; ?>
+ };
-if (preg_match('/Self-intersection\\[([0-9.\\-]+) ([0-9.\\-]+)\\]/',$sVal,$aMatch))
-{
- $sLat = $aMatch[2];
- $sLon = $aMatch[1];
- echo "<a href=\"http://www.openstreetmap.org/?lat=".$sLat."&lon=".$sLon."&zoom=18&layers=M&".$sOSMType."=".$sOSMID."\">".($sVal?$sVal:' ')."</a>";
-}
-else
-{
- echo ($sVal?$sVal:' ');
-}
+ </script>
-?></p>
- </body>
+ <?php include(CONST_BasePath.'/lib/template/includes/html-footer.php'); ?>
+ </body>
</html>