崖っぷちの男

たぶん技術っぽいネタ。ブログ名が決められない

地下街の全体を Yahoo 地下街と PHP で把握する

もう眠いのでちゃっちゃと。
Yahoo 地下街 って便利なんですが、選べる縮尺が限られているせいで、もうちょっと全体が見たい!って時に見られない気がします。
といってもこういった Web の地図サービスは小さい地図画像をタイル状に並べて表示しているだけなので、地図画像の URL さえ分かればあとは自分で並べて一つの大きな地図を表示させることが可能です。


で、その自分で並べて表示するためのスクリプトが以下です。適当に map.php とかの名前で保存して、 PHP の動くサーバに置いて使います。

<html>
<head></head>
<body>
<table cellspacing="0" cellpadding="0" border="0">
<?php
if ($_GET["z"]) {
	$z = $_GET["z"];
} else {
	$z = 19;
}

for ($v = $_GET["top"]; $v >= $_GET["top"] - $_GET["height"]; $v--) {
	echo '<tr>';
	
	for ($h = $_GET["left"]; $h <= $_GET["left"] + $_GET["width"]; $h++) {
		echo '<td>';
		echo '<img src="http://ta.map.yahoo.co.jp/yta/map-b1?v=4.1&r=1'
			. '&x=' . $h
			. '&y=' . $v
			. '&z=' . $z . '" />';
		echo '</td>';
	}
	
	echo '</tr>';
}
?>
</table>
</body>
</html>


map.php には以下のパラメータを渡す必要があります。

  • left … 左から何タイル目から表示するか
  • width … 横何タイル分表示するか
  • top … 上から何タイル目から表示するか
  • height … 縦何タイル分表示するか
  • z … ズーム(19、20、21のみ)。数が大きくなるほど詳細。省略した場合は 19


あとは望んだ場所の地下街全体が表示されるまでこのパラメータを調整、という地道な作業です。
以下は試しに作ってみたものです。map.php の前の部分はみなさまの環境に合わせてください。

新宿地下街
http://.../map.php?left=232790&width=13&top=27858&height=9
新宿地下街(詳細)
http://.../map.php?left=931160&width=56&top=111434&height=37&z=21
梅田地下街
http://.../map.php?left=229732&width=11&top=26978&height=13
梅田地下街(詳細)
http://.../map.php?left=863903&width=44&top=111435&height=52&z=21
東京地下街
http://.../map.php?left=232841&width=11&top=27849&height=9


自分は表示させたものを PDF で保存して Good Reader で持ち運んでいます。
詳細な方のマップは家で見るならまだしも、現地で使うと重いので実用性はないかもしれません。


それではよい週末を〜
雨の時こそ地下街ですしね。