include_spip("inc/distant"); include_spip('inc/modifier'); // inspiré de action/gis_geocoder_rechercher; function gis_infos_coordonnees ($arguments) { if (!isset($arguments['lat'])) return "il manque la latitude pour gis_infos_coordonnees"; if (!isset($arguments['lon'])) return "il manque la longitude pour gis_infos_coordonnees"; $geocoder = defined('_GIS_GEOCODER') ? _GIS_GEOCODER : 'nominatim'; if (in_array($geocoder, array('photon','nominatim'))) { if ($geocoder == 'photon') { if (isset($arguments['accept-language'])) { $arguments['lang'] = $arguments['accept-language']; unset($arguments['accept-language']); } $url = 'http://photon.komoot.de/'; } else { $url = 'http://nominatim.openstreetmap.org/'; $arguments['format'] = 'json'; } $url = defined('_GIS_GEOCODER_URL') ? _GIS_GEOCODER_URL : $url; $url = "{$url}reverse?" . http_build_query($arguments); $data = recuperer_page($url); return json_decode($data, true); } } function texte_infos_coordonnees($latlon) { debug_assert (isset ($latlon['lat']) and isset ($latlon['lon']), "oups @@@SPIP_DIFF0@@@texte_infos_coordonnees @@@SPIP_DIFF1@@@ @@@SPIP_DIFF2@@@paeco_gis_infos_coordonnees @@@SPIP_DIFF1@@@ ne reçoit pas lat et lon mais ".print_r($latlon,1)); $data = gis_infos_coordonnees ($latlon); if (!$data) { return "Erreur interogation géocodeur"; } if (!is_array($data)) { return $data; } if (isset($data['display_name'])) return $data['display_name']; if (isset($data['address'])) return print_r($data['adress'],1); return 'Format de réponse du geocodeur foireux pour '.print_r($latlon, 1); }