Overpass API и вывод json в переполнении стека

Я использую Overpass Turbo для отображения информации на карте.
Часть моего кода (я использую PHP) выглядит следующим образом:

//overpass query
$overpass = 'http://overpass-api.de/api/interpreter?data=[out:json];area(3600046663)->.searchArea;(node["amenity"="drinking_water"](area.searchArea););out;';
// collecting results in JSON format
$html = file_get_contents($overpass);
$jsonout = json_decode($html);
// this line just checks what the query would give as output
var_dump($jsonout);

Результаты запроса в формате JSON (вот что var_dump показывает) выглядит так:

version:    0.6
generator:  "Overpass API"osm3s:
timestamp_osm_base: "2017-11-03T06:25:02Z"timestamp_areas_base:   "2017-11-03T05:45:02Z"copyright:  "The data included in this document is from www.openstreetmap.org. The data is made available under ODbL."elements:
0:
type:   "node"id: 254917402
lat:    46.0672187
lon:    11.1379545
tags:
amenity:    "drinking_water"1:
type:   "node"id: 257481472
lat:    46.0687113
lon:    11.1201097
tags:
amenity:    "drinking_water"

и так далее.

Вы можете увидеть это самостоятельно, скопировав / вставив URL-адрес запроса в вашем браузере: http://overpass-api.de/api/interpreter?data=[out:json];area(3600046663)-%3E.searchArea;(node[%22amenity%22=%22drinking_water%22](area.searchArea) ;);из;

Как видите, каждый element в массиве выше есть широта а также долгота Информация. Мне нужны те, чтобы показать маркеры на карте.

я не способен изолировать lat а также lon информация от каждого элемента в массиве. Как я могу это сделать?

0

Решение

Ну вот:

<?php

// overpass query
$overpass = 'http://overpass-api.de/api/interpreter?data=[out:json];area(3600046663)->.searchArea;(node["amenity"="drinking_water"](area.searchArea););out;';

// collecting results in JSON format
$html = file_get_contents($overpass);
$result = json_decode($html, true); // "true" to get PHP array instead of an object

// elements key contains the array of all required elements
$data = $result['elements'];

foreach($data as $key => $row) {

// latitude
$lat = $row['lat'];

// longitude
$lng = $row['lon'];
}

?>
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector