2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FOSS4GAdvent Calendar 2024

Day 21

OpenLayersでアニメ―テッドGIF/PNG/WEBPのピンを立てる

Last updated at Posted at 2024-12-21

MapLibreアドベントカレンダーから移しました!

すみません、本記事は元々MapLibreアドベントカレンダーに投稿していたものですが、MapLibre対応としては芯を食ってないことに、後の精査でわかりました。
取り急ぎ話題の中心をOpenLayersに変えてFOSS4Gアドベントカレンダーに移し、MapLibreアドベントカレンダー記事としては別のものを今晩中に挙げます(2024/12/25 23:47)。

Canvas/WebGLベースの地図APIでアニメ―テッド画像のピンを立てる

従来のHTML DOM divベースの地図APIでは、アニメーションGIFやAPNGなどの画像を使用して、簡単にアニメーションマーカーを作成することができました。 しかし、HTML canvasやWebGLを使用する新しい地図APIでは、アニメーション画像を単純にマーカーとして使用することができなくなりました。

筆者は、OpenLayersベースで、古地図やイラスト地図を地図化するMaplatというオープンソースプロジェクトを開発していますが、その潜在顧客との要望を交換する中で、民俗イラストマップ、昔ばなしイラストマップなどの中で、たとえば鬼や河童のイラストがアニメーションで動いたりしたら楽しそう、という話をいただきました。
しかし、HTML DOM divベースの地図APIでは簡単に実現できたアニメーションマーカーも、canvasベースのOpenLayersでは実現が難しかったです。
そこで、Canvasベースでもアニメ―テッドGIF/PNG/WEBPの画像を解析して、canvasのコンテキストを定期的に更新してアニメーションマーカーを実現するプロジェクト、Gyeonghwonを開発しました。

ここから下はたわごとです

元々自分がメインはOpenLayers使いだったので、MapLibreにはあまり触っていなかったのですが、CanvasとWebGLの違いはあれ同じ問題ってあるんじゃないかなと思っていたので、試してみたのが今回でした。
OpenLayersのサンプルを食わせて、これと同じものをMapLibreでできるか?と生成AIに聞いてみたら、ちゃんと動くものを出してきたので、やるやんけさすが生成AI、と喜んで出したのが修正前の記事ですが、公開した後で精査したら、MapLibreのhtml divを使ったマーカー機能で実装されていました。
それやったら、普通にアニメ―テッド画像使えばええ話でした。

というわけで、本ソリューションは今のところOpenLayersのみ対応ということで、MapLibreへの対応は、対応する意味があるかの再検討含めて、課題ということで。

生成AIの助けを借りて、Maplibreにも対応するよう修正

Canvasに対応させる仕組みはWebGLにも対応させられると思っていたので、Maplibreでも同じ仕組みが使えるのではないかと思っていましたが、手が回っていませんでした。
今回、アドベントカレンダーに書くネタとして、Maplibreに対応させてはどうかなと思って、生成AI(Claude 3.5 Sonnet)の助けを借りつつ、Maplibreの対応デモと対応手順を作成しました。

プロジェクトをモダナイズするのには、3日以上と相応に手間がかかりましたが、Maplibre対応は生成AIにたずねれば、30分で対応できました。
生成AIすげー。

使えるようなら使ってください

普段はOpenLayers使いで、Maplibre使いではないので、もしかするとこのようなものを導入しなくてもMaplibreにはアニメ―テッド画像に対応する方法があるかもしれず、その点は詳しくないのですが、
もし使う意味があるようでしたら使ってください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?