指定した緯度経度でざっくりと領域をメッシュ表示する地図APIラッパー
2011-02-02-1
[Programming][WebAPI]
Yahoo!デベロッパーネットワークの地図API(スタティックマップ)を利用して、指定した緯度経度でメッシュ表示する簡単なCGI(単なるラッパー)を作りました。
指定した緯度経度の小数点以下の指定桁以下を切り捨て、精度を落とした「位置」をボックス(ピン4つ)で表示します。精度を落とすのは近隣の位置情報を簡単にグルーピングするためで、このAPIラッパーはグルーピング後の状態を分かりやすくブラウズするために使います。

コード (latlonmesh.cgi):
なお、appid の取得は下記からどうぞ:
http://e.developer.yahoo.co.jp/webservices/register_application
動作テスト用フォーム:
ref.
- Yahoo!デベロッパーネットワーク - 地図 - スタティックマップ
http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/static.html
指定した緯度経度の小数点以下の指定桁以下を切り捨て、精度を落とした「位置」をボックス(ピン4つ)で表示します。精度を落とすのは近隣の位置情報を簡単にグルーピングするためで、このAPIラッパーはグルーピング後の状態を分かりやすくブラウズするために使います。

コード (latlonmesh.cgi):
#!/usr/bin/perl -T
use strict;
use warnings;
use CGI;
my $appid = "YOUR APPID";
my $q = new CGI;
my $z = $q->param('z') || 14; # 拡大縮小(Zoom)
my $latlon = $q->param('latlon') || "35.65111,139.70111";
my $d = 10**(($q->param('d') || 3) - 1); # 小数点d桁以下は切り捨て
my $w = $q->param('width') || 400;
my $h = $q->param('height') || 400;
my ($py1, $px1) = map {int($_*$d)/$d} split(",", $latlon);
my ($py2, $px2) = ($py1 + 1/$d, $px1);
my ($py3, $px3) = ($py2, $px1 + 1/$d);
my ($py4, $px4) = ($py1, $px3);
my $murl = "http://map.olp.yahooapis.jp/OpenLocalPlatform/V1/static"
."?appid=$appid"
."&pin1=$py1,$px1"
."&pin2=$py2,$px2"
."&pin3=$py3,$px3"
."&pin4=$py4,$px4"
."&z=$z&width=$w&height=$h";
print qq(Location: $murl\n\n);
(ライセンス的なもの:http://lifehacks.ta2o.net/byebye-copyright.html)なお、appid の取得は下記からどうぞ:
http://e.developer.yahoo.co.jp/webservices/register_application
動作テスト用フォーム:
ref.
- Yahoo!デベロッパーネットワーク - 地図 - スタティックマップ
http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/static.html
