PHP и JSON из поиска Openstreetmap

Я пытаюсь использовать Openstreetmap и PHP, чтобы указать место на карте.
Как вы можете видеть ниже, я получаю массив JSON, но PHP возвращает Значение NULL.

Обратите внимание, что мой $url является действительным JSON (вы можете проверить его Вот).

<?
$url = 'http://nominatim.openstreetmap.org/search/Piazza%20Duomo%20Trento?format=json&addressdetails=1&limit=1&polygon_svg=1';
$html = file_get_contents($url);
$jsonout = json_decode($html);
echo $jsonout[0];
?>

Что я делаю неправильно?

0

Решение

Что я делаю неправильно?

Прежде всего, ваш открывающий тег неверен:

<? ----> <?php

Тогда вы не можете echo такой массив использование var_dump в вашем массиве, чтобы увидеть структуру.

Когда я попробую ваш код с исправлениями, я получил это:

array (size=1)0 =>
object(stdClass)[1]
public 'place_id' => string '8577656' (length=7)
public 'licence' => string 'Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright' (length=84)
public 'osm_type' => string 'node' (length=4)
public 'osm_id' => string '924463183' (length=9)
public 'boundingbox' =>
array (size=4)
0 => string '46.0675164' (length=10)
1 => string '46.0676164' (length=10)
2 => string '11.1217498' (length=10)
3 => string '11.1218498' (length=10)
public 'lat' => string '46.0675664' (length=10)
public 'lon' => string '11.1217998' (length=10)
public 'display_name' => string 'Piazza Duomo, Piazza del Duomo, centro storico Trento, Trento, TN, TAA, 38122, Italia' (length=85)
public 'class' => string 'highway' (length=7)
public 'type' => string 'bus_stop' (length=8)
public 'importance' => float 0.311
public 'icon' => string 'http://nominatim.openstreetmap.org/images/mapicons/transport_bus_stop2.p.20.png' (length=79)
public 'address' =>
object(stdClass)[2]
public 'bus_stop' => string 'Piazza Duomo' (length=12)
public 'pedestrian' => string 'Piazza del Duomo' (length=16)
public 'suburb' => string 'centro storico Trento' (length=21)
public 'city' => string 'Trento' (length=6)
public 'county' => string 'TN' (length=2)
public 'state' => string 'TAA' (length=3)
public 'postcode' => string '38122' (length=5)
public 'country' => string 'Italia' (length=6)
public 'country_code' => string 'it' (length=2)
public 'svg' => string 'cx="11.1217998" cy="-46.067566399999997"' (length=40)
1

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

В ответ на ваш вопрос, за исключением попытки вывести массив со следующим утверждением

echo $jsonout[0];

Который бросит Catchable fatal error: Object of class stdClass could not be converted to string

Все отлично.

Если речь идет о доступе к членам json_decode вернуться, см. ниже

$jsonout массив с одним элементом,
что один элемент является объектом, вы можете получить доступ к его элементам, как это

print $jsonout[0]->licence;

Который будет выводить

Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright

Если вы хотите ассоциативный массив, вы можете передать второй аргумент для json_decode, как это

$jsonout = json_decode($html,true);
print $jsonout[0]['display_name'];

Который будет декодировать JSON в ассоциативный массив и будет отображаться аналогичным образом

Piazza Duomo, Piazza del Duomo, centro storico Trento, Trento, TN, TAA, 38122, Italia
1

пожалуйста используйте print_r () вместо echo

$url = "http://nominatim.openstreetmap.org/search/Piazza%20Duomo%20Trento?format=json&addressdetails=1&limit=1&polygon_svg=1";
$html = file_get_contents($url);
$jsonout = json_decode($html);
print_r($jsonout[0]);

и вы получите свой результат.

0

или вы можете распечатать $jsonout[0]["license"]

0
По вопросам рекламы [email protected]