livedoor天気APIで地域を設定できる天気予報コード(PHP)

livedoor天気APIの 全国の地点定義表(RSS)を使い地域を取得して表示するセレクトボックスを作成しました。ついでに設定した地域を表示する天気予報PHPプログラムも作成しました。

下の画像が、天気予報の表示例です。
livedoorWeather

<?php //天気予報表示
if( isset($_POST['city']) ) {
  $city = $_POST['city'];
} else {
  $city = '140010';
}
$base_url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=$city";
$json = file_get_contents($base_url);
$json = mb_convert_encoding($json, 'UTF-8');
$obj = json_decode($json, true);
?>

<table border="1" cellspacing="0" cellpadding="5">
  <tbody>
    <tr>
      <td colspan="3">
<?php echo $obj['location']['city'] . 'の天気'; ?>
      </td>
    </tr>
    <tr>
<?php foreach($obj['forecasts'] as $fc) { ?>
      <td>
<?php
  echo $fc['dateLabel'] . '<br />';
  echo $fc['telop'] . '<br />';
  echo '<img src="' . $fc['image']['url'] .  '"/><br />';
  echo $fc['temperature']['max']['celsius'] . '℃/' . $fc['temperature']['min']['celsius'] . '℃';
?>
      </td>
<?php } ?>
    </tr>
  </tbody>
</table>

<?php //地域の表示とIDの設定
$area_url = "http://weather.livedoor.com/forecast/rss/primary_area.xml";
$xml = simplexml_load_file($area_url);
$xml = $xml->channel->children('ldWeather', true)->source->children();
?>
<form method="post" action="">
  <select name="city">
<?php
foreach( $xml as $pref ) {
  foreach( $pref->children() as $pchild ) {
    if( $pchild->getName() == 'city' ) {
?>
      <option value="<?php echo $pchild->attributes()->id; ?>"<?php if( $city == $pchild->attributes()->id ){ echo 'selected'; } ?>><?php echo $pchild->attributes()->title; ?></option>';
<?php
    }
  }
}
?>
  </select>
  <input type="submit" value="送信" />
</form>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です