当前位置: 首页 > 知识库问答 >
问题:

Geonames api循环并获取城市名称

吉岳
2023-03-14
$jsonfile = file_get_contents("http://api.geonames.org/searchJSON?username=ksuhiyp&country=pt&maxRows=1000&style=SHORT");
    $jsondata = json_encode($jsonfile);
    $cities = explode(',', $jsondata);
    foreach($cities as $key => $value){
        echo $value;
    }

我如何才能得到所有的城市名称(例如。。。里斯本,波尔图,阿韦罗。。。)是否包含在数组中?

下面是数组的示例:

{"totalResultsCount":37305,"geonames":[{"lng":"-9.13333","geonameId":2267057,"countryCode":"PT","name":"Lisbon","toponymName":"Lisbon","lat":"38.71667","fcl":"P","fcode":"PPLC"},{"lng":"-8.61099","geonameId":2735943,"countryCode":"PT","name":"Porto","toponymName":"Porto","lat":"41.14961","fcl":"P","fcode":"PPLA"},{"lng":"-8.42005","geonameId":2742032,"countryCode":"PT","name":"Braga","toponymName":"Braga","lat":"41.55032","fcl":"P","fcode":"PPLA"},{"lng":"-8.8882","geonameId":2262963,"countryCode":"PT","name":"Setúbal","toponymName":"Setúbal","lat":"38.5244","fcl":"P","fcode":"PPLA"},{"lng":"-8.13057","geonameId":2264397,"countryCode":"PT","name":"Portugal","toponymName":"Portuguese Republic","lat":"39.6945","fcl":"A","fcode":"PCLI"},

共有1个答案

易星纬
2023-03-14

对于初学者来说,这是一种非常难看的获取数据的方法,因为您正在编码已经是json的json数据,然后只对得到的损坏字符串的部分进行循环。

这将得到一个仅包含名称的结果数组:

$jsonfile = file_get_contents("http://api.geonames.org/searchJSON?username=ksuhiyp&country=pt&maxRows=1000&style=SHORT");
$geodat = json_decode($jsonfile,true);
$names = array();
foreach($geodat['geonames'] as $geoname) {
    $names[] = $geoname['name'];
}
print_r($names);

输出示例:

Array (
    [0] => Lisbon
    [1] => Porto
    [2] => Braga
    [3] => Setúbal
    [4] => Portugal
    [5] => Coimbra
    [6] => Funchal
    [7] => Amadora
    [8] => Queluz
    [9] => Lisbon metropolitan area
    ...
 类似资料:
  • 问题内容: 我设法使用基于HTML的地理位置来获取用户的纬度和经度。 我想显示城市名称,看来获得城市名称的唯一方法是使用反向地理位置API。我阅读了Google的反向地理位置文档,但是我不知道如何在我的网站上获得输出。 我不知道该如何使用:在页面上显示城市名称。 我该如何实现? 问题答案: 您将使用Google API执行类似的操作。 请注意,您必须包括google maps库才能起作用。Goog

  • 获取城市计价规则 说明 接入者可以通过以下两种方式获取城市计价规则: 通过URL链接获取计价规则页面 通过接口获取城市计价规则 方式一:通过URL获取 此方式是通过修改URL中的flier和area参数,获得不同车型不同城市的计价规则 地址URL https://static.udache.com/passenger/apps/price/price-rule/index.html?version

  • 获取城市列表 说明 获取全量城市列表 地址URL /v1/common/Cities/getAll 支持格式 {url}?k1=v1&k2=v2&k3=v3&... HTTP请求方式 GET 是否需要登录 是 关于登录授权,参见 如何登录授权 访问授权限制 暂无 请求参数 名称 类型 必选 描述 client_id string yes 申请应用时分配的APP_KEY access_token s

  • 问题内容: 有没有一种方法可以使用javascript的google maps API从纬度和经度点获取城市名称? 如果可以,请举个例子吗? 问题答案: 这称为 反向地理编码 Google提供的文件: http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding。 调用Google地理编码网络服务的示例: ht

  • 我是Android开发的新手,下面是我的关于使用Geocoder获取当前位置的城市名称的代码,它返回空: private void updateCurrentLocation(Location Location){double lat=0.0,lng=0.0; 有谁能帮忙吗?谢谢你!顺便说一句,有没有更好的办法来接收一个城市名字?谢谢你!

  • 定义 选择城市的组件。 图片展示 代码演示 import City from 'pile/dist/components/city' <City show={false} // cityArr={cityArr} // 城市数组 // position= {cityArr[0]} //定位城市 // 城市对象的默认属性为 // city_id、city_name、firs

  • 在论坛上搜索了几天,我仍然无法理解它... null (不需要其他的东西,因为其余的是通过lat/lon坐标运行的)。 在登录时,我希望他们 通过谷歌地图上的标记来设置坐标(单点击和只有1个标记,第二次点击标记会删除第一个标记,不确定我是否会使用传感器....)

  • 问题内容: 如何使用MapKit从坐标获取地址? 当在地图上长按时,我得到了以下代码: 我想用完整的地址(街道,城市,邮政编码,国家)打印。 问题答案: SWIFT 4.2:编辑 框架确实提供了一种从坐标获取地址详细信息的方法。 您需要使用地图套件的 反向地理编码 。类用于从地址获取位置,并从位置(坐标)获取地址。该方法将从坐标返回地址详细信息。 此方法接受作为参数并返回,其中包含地址字典。 所以