]> git.openstreetmap.org Git - nominatim.git/blobdiff - lib/template/search-batch-json.php
traverse address list backwards when computing admin levels
[nominatim.git] / lib / template / search-batch-json.php
index edfe3871403684842fa822afcb2f4722a09db5b7..40b27a72e9dc9b607f4de61756b9bc335c6ce7e3 100644 (file)
@@ -1,88 +1,77 @@
 <?php
 
-       $aOutput = array();
-       $aOutput['licence'] = "Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright";
-       $aOutput['batch'] = array();
-
-       foreach($aBatchResults as $aSearchResults)
-       {
-               if (!$aSearchResults) $aSearchResults = array();
-               $aFilteredPlaces = array();
-               foreach($aSearchResults as $iResNum => $aPointDetails)
-               {
-                       $aPlace = array(
-                                               'place_id'=>$aPointDetails['place_id'],
-                                       );
-
-                       $sOSMType = ($aPointDetails['osm_type'] == 'N'?'node':($aPointDetails['osm_type'] == 'W'?'way':($aPointDetails['osm_type'] == 'R'?'relation':'')));
-                       if ($sOSMType)
-                       {
-                               $aPlace['osm_type'] = $sOSMType;
-                               $aPlace['osm_id'] = $aPointDetails['osm_id'];
-                       }
-
-                       if (isset($aPointDetails['aBoundingBox']))
-                       {
-                               $aPlace['boundingbox'] = array(
-                                       $aPointDetails['aBoundingBox'][0],
-                                       $aPointDetails['aBoundingBox'][1],
-                                       $aPointDetails['aBoundingBox'][2],
-                                       $aPointDetails['aBoundingBox'][3]);
-
-                               if (isset($aPointDetails['aPolyPoints']) && $bShowPolygons)
-                               {
-                                       $aPlace['polygonpoints'] = $aPointDetails['aPolyPoints'];
-                               }
-                       }
-
-                       if (isset($aPointDetails['zoom']))
-                       {
-                               $aPlace['zoom'] = $aPointDetails['zoom'];
-                       }
-
-                       $aPlace['lat'] = $aPointDetails['lat'];
-                       $aPlace['lon'] = $aPointDetails['lon'];
-                       $aPlace['display_name'] = $aPointDetails['name'];
-                       $aPlace['place_rank'] = $aPointDetails['rank_search'];
-
-                       $aPlace['category'] = $aPointDetails['class'];
-                       $aPlace['type'] = $aPointDetails['type'];
-
-                       $aPlace['importance'] = $aPointDetails['importance'];
-
-                       if (isset($aPointDetails['icon']))
-                       {
-                               $aPlace['icon'] = $aPointDetails['icon'];
-                       }
-
-                       if (isset($aPointDetails['address']) && sizeof($aPointDetails['address'])>0)
-                       {
-                               $aPlace['address'] = $aPointDetails['address'];
-                       }
-
-                       if (isset($aPointDetails['asgeojson']))
-                       {
-                               $aPlace['geojson'] = json_decode($aPointDetails['asgeojson']);
-                       }
-
-                       if (isset($aPointDetails['assvg']))
-                       {
-                               $aPlace['svg'] = $aPointDetails['assvg'];
-                       }
-
-                       if (isset($aPointDetails['astext']))
-                       {
-                               $aPlace['geotext'] = $aPointDetails['astext'];
-                       }
-
-                       if (isset($aPointDetails['askml']))
-                       {
-                               $aPlace['geokml'] = $aPointDetails['askml'];
-                       }
-
-                       $aFilteredPlaces[] = $aPlace;
-               }
-               $aOutput['batch'][] = $aFilteredPlaces;
-       }
-
-       javascript_renderData($aOutput, array('geojson'));
+$aOutput = array();
+$aOutput['licence'] = 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright';
+$aOutput['batch'] = array();
+
+foreach ($aBatchResults as $aSearchResults) {
+    if (!$aSearchResults) $aSearchResults = array();
+    $aFilteredPlaces = array();
+    foreach ($aSearchResults as $iResNum => $aPointDetails) {
+        $aPlace = array(
+                   'place_id'=>$aPointDetails['place_id'],
+                  );
+
+        $sOSMType = formatOSMType($aPointDetails['osm_type']);
+        if ($sOSMType) {
+            $aPlace['osm_type'] = $sOSMType;
+            $aPlace['osm_id'] = $aPointDetails['osm_id'];
+        }
+
+        if (isset($aPointDetails['aBoundingBox'])) {
+            $aPlace['boundingbox'] = array(
+                                      $aPointDetails['aBoundingBox'][0],
+                                      $aPointDetails['aBoundingBox'][1],
+                                      $aPointDetails['aBoundingBox'][2],
+                $aPointDetails['aBoundingBox'][3]
+                                     );
+
+            if (isset($aPointDetails['aPolyPoints']) && $bShowPolygons) {
+                $aPlace['polygonpoints'] = $aPointDetails['aPolyPoints'];
+            }
+        }
+
+        if (isset($aPointDetails['zoom'])) {
+            $aPlace['zoom'] = $aPointDetails['zoom'];
+        }
+
+        $aPlace['lat'] = $aPointDetails['lat'];
+        $aPlace['lon'] = $aPointDetails['lon'];
+        $aPlace['display_name'] = $aPointDetails['name'];
+        $aPlace['place_rank'] = $aPointDetails['rank_search'];
+
+        $aPlace['category'] = $aPointDetails['class'];
+        $aPlace['type'] = $aPointDetails['type'];
+
+        $aPlace['importance'] = $aPointDetails['importance'];
+
+        if (isset($aPointDetails['icon'])) {
+            $aPlace['icon'] = $aPointDetails['icon'];
+        }
+
+        if (isset($aPointDetails['address'])) {
+            $aPlace['address'] = $aPointDetails['address']->getAddressNames();
+        }
+
+        if (isset($aPointDetails['asgeojson'])) {
+            $aPlace['geojson'] = json_decode($aPointDetails['asgeojson']);
+        }
+
+        if (isset($aPointDetails['assvg'])) {
+            $aPlace['svg'] = $aPointDetails['assvg'];
+        }
+
+        if (isset($aPointDetails['astext'])) {
+            $aPlace['geotext'] = $aPointDetails['astext'];
+        }
+
+        if (isset($aPointDetails['askml'])) {
+            $aPlace['geokml'] = $aPointDetails['askml'];
+        }
+
+        $aFilteredPlaces[] = $aPlace;
+    }
+    $aOutput['batch'][] = $aFilteredPlaces;
+}
+
+javascript_renderData($aOutput, array('geojson'));