APIから取得したポリラインのデコードで、かなり詰まってしまったので備忘録として残します。
今回の経験、Directions APIから取得したデータの扱いだったのですが、AIとの付き合い方についても教訓を得たので、併せて記しておきます。
Google Maps Platform の Directions API は、出発地と目的地の情報を入力すると、ルートや所要時間、距離などを計算して返してくれる API です。
HTTP リクエストで簡単に利用できるため、私もよく利用しています。
当初、Directions APIを呼び出す部分のコードはAIに生成してもらいました。
Go言語で書いてもらったコードは問題なく動作したのですが、flutterで書き直してもらったコードは、なぜかうまく動作しません。
AIに「flutterで動作するように修正して」と何度も指示を出すも、一向に解決せず、結局この問題だけで丸一日を費やしてしまいました...
「今までのプロジェクトとは別に新たにプロジェクトをつくるとしたら?」と発想を転換し、改めてネットで情報収集を開始。
すると、flutterでDirections APIを利用するための情報が多数ヒットし始めました。
そこで初めて、flutterには専用のライブラリが存在することを知ったのです。
試行錯誤の末、go言語で作ったデコード処理をdart言語に移植するのではなく、flutterのライブラリを使用することで、ようやくポリラインをデコードすることができました!
しかも、デコード用のライブラリは2種類も見つかりました。
興味深いことに、私の環境では古い「google_polyline_algorithm」ライブラリの方がうまく動作しました。
以下に、google_polyline_algorithmライブラリを使用したデコードのサンプルコードを記載します。
import 'package:google_polyline_algorithm/google_polyline_algorithm.dart'; void main() { String encodedPolyline = "APIから取得したエンコードされたポリライン"; List<List<double>> decodedPolyline = decodePolyline(encodedPolyline); print(decodedPolyline); // デコードされたポリライン(緯度経度のリスト) }
AIは便利な反面、今回のように、意図した通りのコードを生成してくれないこともあります。
特にライブラリを使うようなケースでは、AI任せにするのではなく、まずは公式ドキュメントや信頼できる情報源で、本家のライブラリを探してみることが重要だと痛感しました。
今回の経験を教訓に、今後はAIと上手に付き合いつつ、開発効率を向上させていきたいです。