.searchArea; ( nwr["shop"](area.searchArea); ); out body; >; out skel qt; QUERY; try { $response = $this->client->request('POST', $this->overpassApiUrl, [ 'body' => ['data' => $query] ]); $data = json_decode($response->getContent(), true); $shops = []; if (isset($data['elements'])) { foreach ($data['elements'] as $element) { if (isset($element['tags']['shop'])) { $shops[] = [ 'id' => $element['id'], 'type' => $element['type'], 'name' => $element['tags']['name'] ?? 'Sans nom', 'shop_type' => $element['tags']['shop'], 'lat' => $element['lat'] ?? null, 'lon' => $element['lon'] ?? null, 'tags' => $element['tags'] ]; } } } return $shops; } catch (\Exception $e) { throw new \Exception("Erreur lors de la requête Overpass : " . $e->getMessage()); } } public function get_osm_object_data($osm_object_id = 12855459190) { $object_id = "https://www.openstreetmap.org/api/0.6/node/".$osm_object_id; try { $response = $this->client->request('GET', $object_id); $xml = simplexml_load_string($response->getContent()); $json = json_encode($xml); $osm_object_data = json_decode($json, true); } catch (\Exception $e) { throw new \Exception("Impossible de récupérer les données OSM : " . $e->getMessage()); } // convertir les tags en clés et valeurs $osm_object_data['tags_converted'] = []; foreach ($osm_object_data['node']['tag'] as $attribute) { $osm_object_data['node']['tags_converted'][$attribute['@attributes']['k']] = $attribute['@attributes']['v']; } return $osm_object_data['node']; } public function semer(): string { return "La motocultrice sème les graines"; } public function récolter(): string { return "La motocultrice récolte les cultures"; } }