2017-11-03 10 views
0

マップ上に情報を表示するためにオーバーパスターボを使用しています。次のように私のコードの 一部は(私はPHPを使用)です:オーバーパスAPIとPHPのjson出力

//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););out;

あなたが見ることができるように、上記アレイの各element緯度経度情報を持っています。マップ上にマーカーを表示する必要があります。

Iがすることができませんが、アレイ内の各要素からlatlon情報を分離します。どうやってやるの?ここで

答えて

3

あなたが行く:

<?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']; 
} 

?>