openstreetmap.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. require_once "engines/text/text.php";
  3. class OSMRequest extends EngineRequest {
  4. public function get_request_url() {
  5. $query_encoded = str_replace("%22", "\"", urlencode($this->query));
  6. $results = array();
  7. // TODO allow the nominatim instance to be customised
  8. $url = "https://nominatim.openstreetmap.org/search?q=$query_encoded&format=json";
  9. return $url;
  10. }
  11. public function parse_results($response) {
  12. $json_response = json_decode($response, true);
  13. if (!$json_response)
  14. return array();
  15. $results = array();
  16. foreach ($json_response as $item) {
  17. array_push($results, array(
  18. "title" => $item["name"],
  19. "description" => $item["display_name"],
  20. "url" => "https://www.openstreetmap.org/" . $item["osm_type"] . "/" . $item["osm_id"],
  21. "base_url" => "www.openstreetmap.org"
  22. ));
  23. }
  24. return $results;
  25. }
  26. public static function print_results($results, $opts) {
  27. TextSearch::print_results($results, $opts);
  28. }
  29. }
  30. ?>