duanjing7651 2017-11-03 06:39 采纳率: 0%
浏览 134
已采纳

在PHP中覆盖API和json输出

I am using Overpass Turbo to show information on a map. Part of my code (I use PHP) is as follows:

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

Query results in JSON format (which is what var_dump shows) look like this:

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"

and so on.

You can see it yourself, copying/pasting the query URL in your browser: http://overpass-api.de/api/interpreter?data=[out:json];area(3600046663)-%3E.searchArea;(node[%22amenity%22=%22drinking_water%22](area.searchArea););out;

As you can see, each element in the array above has latitude and longitude information. I need those to show markers on a map.

I am not able to isolate the lat and lon information from each element in the array. How can I do that?

  • 写回答

1条回答 默认 最新

  • douzhang1299 2017-11-03 06:49
    关注

    Here you go:

    <?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'];
    }
    
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 想问问这个建模怎么编程没有思路
  • ¥15 关于imageENview(ImageEN)中新建图层并根据鼠标位置添加图标
  • ¥100 用两台电脑局域联网进行MT5的EA参数优化,但是连接不上
  • ¥15 FastAPI报错: AsyncSession不是有效Pydantic类型
  • ¥50 这Mac系统提示虚拟内存不足,怎么解决
  • ¥15 Rs232电路无法收发数据,求帮助
  • ¥15 百度cookie扫码登录器
  • ¥15 微机原理汇编语言debug调试实验
  • ¥23 matlab可以把相图转换为庞加莱映射吗
  • ¥15 Arduino电机和openmv连接异常