Subscribed unsubscribe Subscribe Subscribe

yolpのlocalsearchの説明が悪い

http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/localsearch.html
リクエストパラメータ一覧のとこにはappidにしか必須がついてないのに
下の方に

API使用上の注意
appid以外に緯度経度(lat,lon),uid,cid,query,acのいずれかのパラメータが必須となります。
URLの最大の長さは2048バイトです。エンコード後のURLの長さが2048バイトを超えないようにしてください。

とかあるし、bboxも準必須?パラメータになってると嬉しいけどしょうがないのでbboxで指定しつつ、boxの中心をlat,lonに入れた

use strict;
use warnings;
use LWP::Simple qw/get/;
use JSON;
use Encode qw/encode_utf8/;

my ($min_lon, $min_lat, $max_lon, $max_lat) = (139.5271, 35.4421, 139.6454, 35.4489); #中華街行きたい
my $appid = "appid";
my $json = get( sprintf "http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch?output=json&bbox=%s,%s,%s,%s&appid=%s&results=100&lat=%s&lon=%s", $min_lon, $min_lat, $max_lon, $max_lat, $appid, ($max_lat + $min_lat)/2, ($max_lon + $min_lon)/2 ); 
my $hash = decode_json($json);
for my $feature (@{$hash->{Feature}}) {
    if ( defined $feature->{Geometry} and $feature->{Geometry}->{Type} eq "point" ) {
        my ($lon, $lat) = split ",", $feature->{Geometry}->{Coordinates};
        my $name = encode_utf8($feature->{Name});
        unless ( $min_lat < $lat and $lat < $max_lat and $min_lon < $lon and $lat < $max_lon ) {
            warn $name . " is out bbox...";
        }
        else {
            warn $name;
        }
    }
}

こんな感じで確かめた。