指定した緯度経度でざっくりと領域をメッシュ表示する地図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):
(ライセンス的なもの:http://lifehacks.ta2o.net/byebye-copyright.html)#!/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);
なお、appid の取得は下記からどうぞ:
http://e.developer.yahoo.co.jp/webservices/register_application
動作テスト用フォーム:
ref.
- Yahoo!デベロッパーネットワーク - 地図 - スタティックマップ
http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/static.html