Я пытаюсь выполнить обратное геокодирование в php. К сожалению, я получаю сообщение об ошибке.
$lon = 100.753;
$lat = 13.69362;
function getAddress($RG_Lat,$RG_Lon)
{
$json = "http://nominatim.openstreetmap.org/reverse?format=json&lat=".$RG_Lat."&lon=".$RG_Lon."&zoom=27&addressdetails=1";
$jsonfile = file_get_contents($json);
$RG_array = json_decode($jsonfile,true);
foreach ($RG_array as $name => $value)
{
if($name == "display_name")
{
$RG_address = $value;
break;
}
}
return $RG_address;
}
$addr = getAddress($lat,$lon);
echo "Address: ".$addr;
Вот ошибки, которые я получаю.
<b>Warning</b>: file_get_contents(http://nominatim.openstreetmap.org/reverse?format=json&lat=13.69362&lon=100.753&zoom=27&addressdetails=1): failed to open stream: Connection timed out in <b>/home/public_html/myapp/get_loc.php</b> on line <b>22</b><br />
<br />
<b>Warning</b>: Invalid argument supplied for foreach() in <b>/home/public_html/myapp/get_loc.php</b> on line <b>25</b><br />
<br />
<b>Notice</b>: Undefined variable: RG_address in <b>/home/public_html/myapp/get_loc.php</b> on line <b>34</b><br />
Address: <br />
Если я использую код ниже в Angular, то он работает нормально.
showCountry($scope.latitude,$scope.longitude);
function showCountry(lat, lon) {
$.getJSON('//nominatim.openstreetmap.org/reverse?json_callback=?&format=json', {lat: lat, lon: lon}, function(data) {
console.log(data.address.town);
console.log('suburb- '+data.address.suburb);
console.log('county/district -'+data.address.county);
console.log('state - '+data.address.state);
console.log(data.address.postcode);
console.log(data.address.country);
});
}
Я не могу выполнить это действие на стороне клиента; вот почему мне нужно сделать это в php.