ReactでGoogleMapsAPIを使いこなす|高度なマーカーの作成


こんにちは。
開発本部 SJC共同開発推進室の中野です。

Webフロントエンドで地図を実装する際、多くの開発者が最初に頭に浮かべるのは「Google Maps API」だと思います。

Google Maps API には、地図表示だけでなく、非常に強力な機能が備わっています。
その中でも特に注目すべき機能──それは 2023年5月にリリースされた 「高度なマーカー」です。

通常の地図マーカーでは表現不可能だった、より豊富な情報を表示できるこの機能は、一度使うと病みつきになること間違いなしだと思います。

今回の記事では、Google Maps APIの「高度なマーカー」をReactでどのように実装するかに焦点を当て、その魅力をご紹介します。

高度なマーカーでできること

「高度なマーカー」の機能を活用することで、非常にカスタマイズ性の高いマーカーを手軽に作成できます。この機能の特長として、以下が挙げられます。

  1. マーカーの背景色、輪郭線の色、グリフの色、サイズがカスタマイズ可能
  2. マーカーをSVGやPNG形式等の一般的な拡張子のカスタム画像に変更可能
  3. DOMクリックイベントやキーボード入力に反応できる
  4. カスタムHTML および CSS を活用してより高度なカスタマイズが可能
  5. 3D 地図要素に合わせて正しく表示されるよう、マーカーの表示高度を設定可能

凄いですよね?
バリエーションごとに画像を作成しなくてもマーカーをカスタマイズできるので開発者の工数がかなり減ると思います。
通常のマーカーでは難しかったり、大変だったりした実装が、手軽にできるのは有難いですよね!

しかも読み込み時間が従来のマーカーより短縮されているとかなんとか…

React×GoogleMapsAPI

動作環境は React を Docker で立ち上げています。
環境構築から始める場合は、Googleで検索していただくと非常にわかりやすい記事が既に出回っているので、そちらを参考に準備をお願いします。

今回は、公式から提供されている@googlemaps/react-wrapperというライブラリを利用します。
React+高度なマーカーの組み合わせがいかにお手軽かについて例示いたします!

Reactで地図を表示してみる

マーカーを試すための下地として、Reactでまずは普通の地図を表示しましょう。
そのために Mapコンポーネントを作成します。

注意点なのですが、Wrapper コンポーネントの props に version=”beta”libraries={[‘marker’]} を忘れずに入れて下さい!
これがないと、後で高度なマーカーの使用ができなくなります。
 
私はここでハマりました。。。
 

↓ 無事に地図が表示されましたね!(地図の中心を弊社の位置にしてみました)次はここにマーカーを入れてみましょう。

高度なマーカーを利用してマーカーを作成してみる

新たに Marker コンポーネントを作成します。

先程作成した MyMap コンポーネントの children として Marker コンポーネントを渡してあげると地図上ににマーカーが追加されます。

マーカーを生成する時に
背景色を変更するのであれば PinView.background オプションを
グリフの色を変更するのであれば PinView.glyphColor オプションを使用するだけ。
スケール(マーカーサイズ)もオプションとして使用することができます。
 
簡単ですよね?
初めて実装したときは簡単すぎて拍子抜けしました。
 
↓ 地図にピンのアイコンのマーカーが表示されましたね!

GoogleMapでよく見るピンと比較してみました。
よく見るピンと少しデザインが違うのが分かると思います。

あれ、あまり目立ちませんね。。。
折角なので色を変えて大きくしてみましょう!

かなり目立ってますね。。。

変更したのはこの部分だけ!手軽にカスタマイズできることをご理解いただけたと思います。

終わりに

Reactでの高度なマーカーの実装方法をご紹介しました。

「高度なマーカー」を使用することでカスタマイズの幅が非常に広がります。
活用次第では、ユーザー体験も向上すること間違いなしだと思います。

最近リリースされたばかりの高度なマーカーは、情報が多く出回っていないので少しでも参考になれば嬉しいです。

ライブラリの基本的な使い方は省略させていただきましたが、こちらの記事に地図の表示から通常のマーカーの生成までチュートリアル形式で載ってますので初めての方はご覧ください。