Yahoo APIを使って周辺の飲食店を検索しよう
はじめに
どうも、連日朝の8時頃から22時まで労働に勤しむ社畜です。労働時間が長いことが嫌で転職したのに、出向という形で飛ばされてしまった。飛ばされた先は、少数精鋭部隊のソルジャーチームで日に日に人が抜けていく。詰んでるので激しいフォローなども無く、プロジェクトは燃え落ち朽ちるのを待つのみ。
炎上しすぎると無情に時間だけが過ぎていくのです。私には分かります。
辛いときは美味い飯を食べたいものです。うまい飯を探しましょう。
飲食店APIについて
一昔前は、ぐるなびAPIやホットペッパー飲食店APIがありましたが提供終了(終了予定)となっております。 代わりに何か無いかなと探した所、Google map APIかYahoo APIがヒットしました。 Google map APIは有料なのでYahoo APIでいきましょう。 ただ困ったことに、Yahoo APIで取得できる情報はGeocodが含まれていないため別口で取得する必要があります。 今回は、飲食店情報を取得して、住所からGeocodを取得するところまで進めます。
Yahoo APIを取得するコード
コード解説
以下では、Yahoo APIの飲食店情報をFlutterから取得していきます。APIキーは別途取得しておいてください。
とりあえず動かしたい人向けにコードを置いておきます。
基本的には前回までのコードべース拡張していきます。 https://github.com/kenpos/yahoo_api_flutter
ローカルサーチAPIから取得
取得したYahoo APIキーで<APIキー>を置き換えると良いです。特に説明する箇所も無いです。URLに座標や、検索する単語を指定し周辺の店を取得することも可能です。
void requestSample2() async {
var uri = Uri.parse(
'https://map.yahooapis.jp/search/local/V1/localSearch?appid=<APIキー>&output=json&query=ラーメン');
http.Response res = await http.get(uri);
if (res.statusCode == 200) {
String data = res.body;
Map<String, dynamic> map = jsonDecode(data);
var yapi = YahooApi.fromJson(map);
print(yapi.resultInfo.total);
for (var i = 0; i < yapi.resultInfo.count; i++) {
print(yapi.feature[i].name);
String add = yapi.feature[i].property.address;
print(yapi.feature[i].property.address);
requestAddCoder(add);
}
} else {
throw Exception('Failed to load post');
}
}
住所から座標を取得する
巨人の肩を借りていきます。 geocoding
flutter pub add geocoding
これを使うための関数を用意します。 locationFromAddressの引数に、文字列に住所を渡せばlatとlongが貰える。
Future<void> requestAddCoder(String address) async {
List<Location> locations = await locationFromAddress(address);
print(locations.first.latitude);
print(locations.first.longitude);
}
結果
まずはDebug Consoleに店の名前と座標を表示しています。
まとめ
次回は、座標を基に地図データをプロットしていくことにしましょう。 UIにInputBoxを置いて検索できるようにもしていきたいですね。 今日はここまで。