Slide 1

Slide 1 text

FlutterでGoogle Mapsを 触ってみた potatotips #82 いどぬん / Natsuki Idota

Slide 2

Slide 2 text

自己紹介 ● 名前 いどぬん / Natsuki Idota ● 会社 株式会社Mobility Technologies / Flutter ● サービス Twitter: @idonuntius Github: idonuntius

Slide 3

Slide 3 text

本題 サンプルは下記URL https://github.com/idonuntius/GoogleMapsExample_Flutter

Slide 4

Slide 4 text

紹介 1. マップ 2. マーカー 3. ポリライン

Slide 5

Slide 5 text

紹介 4. ポリゴン 5. サークル

Slide 6

Slide 6 text

導入方法(1. APIの取得) 1. https://mapsplatform.google.com/ にアクセスし、「Get started」をクリック 2. 必要事項を入力 3. 「自分のAPIキー」をコピー

Slide 7

Slide 7 text

導入方法(2. Flutter側の設定) pubspec.yamlのdependenciesにgoogle_maps_flutterを追加

Slide 8

Slide 8 text

導入方法(3. iOS側の設定) AppDelegate.swiftを開き 1. 「import GoogleMaps」を追加 2. 「GMSServices.provideAPIKey(APIKey)」を追加 1 2

Slide 9

Slide 9 text

導入方法(4. Android側の設定) AndroidManifest.xmlを開き、「com.google.android.geo.API_KEY」を追加

Slide 10

Slide 10 text

使用方法(最速実装)

Slide 11

Slide 11 text

使用方法(GoogleMapクラスの主なオプション) オプション 説明 デフォルト値 initialCameraPosition マップのカメラの初期位置 onMapCreated マップが使用可能な状態になったとき(生成時)のコールバックメソッド mapType マップの種類 MapType.normal scrollGesturesEnabled スクロールジェスチャーに反応するかどうかを指定 true onCameraMove ドラッグやピンチのジェスチャ操作など状態変更時に発生。 地図(カメラ)の中心の緯度と 経度を取得 markers 地図上に配置するマーカー polylines 地図上に表示するポリライン polygons 地図上に表示するポリゴン circles 地図上に表示するサークル

Slide 12

Slide 12 text

使用方法(GoogleMapの主なオプション) オプション 説明 デフォルト値 initialCameraPosition マップのカメラの初期位置 onMapCreated マップが使用可能な状態になったとき(生成時)のコールバックメソッド mapType マップの種類 MapType.normal scrollGesturesEnabled スクロールジェスチャーに反応するかどうかを指定 true onCameraMove ドラッグやピンチのジェスチャ操作など状態変更時に発生。 地図(カメラ)の中心の緯度と 経度を取得 markers 地図上に配置するマーカー polylines 地図上に表示するポリライン polygons 地図上に表示するポリゴン circles 地図上に表示するサークル

Slide 13

Slide 13 text

マップの種類(MapType) 1. none 2. normal 3. satellite (衛生) 4. terrain (地形) 5. hibrid (衛星画像+ラベル/ オーバーレイ)

Slide 14

Slide 14 text

マーカーの表示

Slide 15

Slide 15 text

Markerクラスの主なオプション オプション 説明 デフォルト値 markerId マーカーID position マーカーの位置。LatLngで指定 LatLng(0.0, 0.0) icon マーカーのアイコン BitmapDescriptor.defaultMarker infoWindow タップ時に表示される情報ウィンドウ InfoWindow.noText anchor マーカーのpositionに配置されるiconの位置 (0.0, 0.0)の場合は画像の左上、 (1.0, 1.0)の場合は画像の右下 Offset(0.5, 1.0) rotation マーカーの回転 0.0 onTap マーカーのタップイベントを受け取るためのコールバック 他にもドラックイベントを受け取るためのコールバックなどがあります

Slide 16

Slide 16 text

Markerクラスの主なオプション オプション 説明 デフォルト値 markerId マーカーID position マーカーの位置。LatLngで指定 LatLng(0.0, 0.0) icon マーカーのアイコン BitmapDescriptor.defaultMarker infoWindow タップ時に表示される情報ウィンドウ InfoWindow.noText anchor マーカーのpositionに配置されるiconの位置 (0.0, 0.0)の場合は画像の左上、 (1.0, 1.0)の場合は画像の右下 Offset(0.5, 1.0) rotation マーカーの回転 0.0 onTap マーカーのタップイベントを受け取るためのコールバック 他にもドラックイベントを受け取るためのコールバックなどがあります

Slide 17

Slide 17 text

マーカーのアイコン 1. 色の変更 「hubBlue」以外にもさまざまな色が定義されています。 また「defaultMarkerWithHue」には0~360の値を指定 できるので自分の好きな色に変更ができます。

Slide 18

Slide 18 text

マーカーのアイコン 2. 画像に変更 1. pubspec.yamlにリソースを追加 2. 画像の設定

Slide 19

Slide 19 text

マーカーのアイコン 2. 画像に変更 1. pubspec.yamlにリソースを追加 2. 画像の設定 ローカルの画像を取得するための 「fromAssetImage」メソッドが Future型のた め「FutureBuilder」を使用する

Slide 20

Slide 20 text

マーカーのアイコン 2. 画像に変更 1. pubspec.yamlにリソースを追加 2. 画像の設定 取得した画像を設定

Slide 21

Slide 21 text

マーカーのアイコン 2. 画像に変更

Slide 22

Slide 22 text

マーカーの情報ウィンドウ その他にも「anchor」や「onTap」の オプションがあります。

Slide 23

Slide 23 text

ポリライン

Slide 24

Slide 24 text

ポリライン

Slide 25

Slide 25 text

ポリライン マップ生成時にカメラを移動させて、 ポリライン全体を表示させることも可能

Slide 26

Slide 26 text

Polylineクラスの主なオプション オプション 説明 デフォルト値 polylineId ポリラインID points ポリラインの座標。LatLngのListで指定 [] patterns ポリラインのストロークパターン [] color ポリラインの色 Colors.black width ポリラインの幅 10 onTap タップイベントを受け取るためのコールバック

Slide 27

Slide 27 text

Polylineクラスの主なオプション オプション 説明 デフォルト値 polylineId ポリラインID points ポリラインの座標。LatLngのListで指定 [] patterns ポリラインのストロークパターン [] color ポリラインの色 Colors.black width ポリラインの幅 10 onTap タップイベントを受け取るためのコールバック

Slide 28

Slide 28 text

ポリラインのパターン

Slide 29

Slide 29 text

ポリラインのパターン 但し、Androidでしか使えません。 iOSはissue化されており、まだ実装中みたいです。 https://github.com/flutter/flutter/issues/60083

Slide 30

Slide 30 text

応用 1. マーカー + Timer 2. マーカー + ポリライン

Slide 31

Slide 31 text

まとめ ● FlutterのGoogle Mapsではマーカーやポリラインなどを使って色々な表示ができそ う ● またそれらを組み合わせることで様々な用途に使えそう

Slide 32

Slide 32 text

ありがとうございました