🐷

FlutterMap のアニメーション遷移がとんでもない量のAPIリクエストを送っててシステムが止まった

2024/08/19に公開

Flutter でマップを使用する場合だいたいの方は
・GoogleMap
・AppleMap
だと思います。

https://pub.dev/packages/google_maps_flutter
https://pub.dev/packages/apple_maps_flutter

ただ、これらのマップではマーカーが好きに弄れないので
自分は FlutterMap を使用しました。

https://pub.dev/packages/flutter_map

FlutterMap のデフォルト関数の地点移動では
地点間の移動をアニメーションするのではなく
全くアニメーション感の無いジャンプみたいな移動なんですよね。

ちょっと味気ねぇなと思っていたので
色々と探してたらとあるパッケージを見つけました。
それがこちら

https://pub.dev/packages/flutter_map_animations

このライブラリでは、地点間の移動をアニメーションしてくれるので
結構重宝してる人も多いと思います。

ただ、こいつが原因でマップが止まりました。笑

原因

原因はアニメーション移動するときに
地点間のマップを全て描画しているっぽいって事です。

つまり、わざわざマップを作成するAPIリクエストを走らせてるって事ですね。

ズームレベルにもよるんでしょうが
サンフランシスコから渋谷までの地点移動で1000回以上もAPIリクエストが走ってました。笑
やばすぎぃ笑

自分はこれでたった1時間くらいで
15k、つまり1.5万回のリクエストを送ってGoogle様からAPIを止められました。笑
逆に良かった、多大な損失を出す前で。笑

解決策

ま、使わなければ問題ないんですが
それだと味気ないジャンプ移動になっちゃうので
地点間の距離が3km未満ならアニメーション遷移して
それ以上だとジャンプ移動みたいにしました。

そもそも長距離でのアニメーションは綺麗ではなかったので
むしろ良かったなと思ってる次第ですmm

Discussion