flutter_mapbox_glのMapboxMapクラスのコンストラクタの引数のメモ

# はじめに
flutter_mapbox_glを使っているんですが、MapboxMapクラスのコンストラクタの引数が結構あるので、ちょっとメモがてらまとめようかともいます。

公式の[MapboxMap constructor ](https://pub.dev/documentation/mapbox_gl/latest/mapbox_gl/MapboxMap/MapboxMap.html)のドキュメント読めという話もありますが、ドキュメントだけだとわからないこともあるので。

現状、使ったことのあるパラメタについて記載しています。
しかし、こう並べてみると、試してないパラメタ多いな。
試したら更新していこうかと思います。

# バージョン
flutter 2.10
flutter_mapbox_glは0.16.0

2022/08/03現在、0.16.0はflutter 3で動かすと、描画がおかしくなる問題がある。
そのため、flutterは2.x系を利用するのが良いみたい。

このパラメタこんな動きするよ、とかあればコメントお願いします。

# パラメタ

## key
```dart
Key? key
```

## CameraPosition
```dart
required CameraPosition initialCameraPosition
```

初期表示の緯度経度、表示の倍率などを指定できる。

## accessToken
```dart
String? accessToken
```

アクセストークンを指定できる。


## onMapCreated
```dart
MapCreatedCallback? onMapCreated
```

マップが生成されたときに呼び出されるコールバック

## onStyleLoadedCallback
```dart
OnStyleLoadedCallback? onStyleLoadedCallback
```

## gestureRecognizers
```dart
Set<Factory<OneSequenceGestureRecognizer>>? gestureRecognizers
```

## compassEnabled
```dart
bool compassEnabled = true
```

地図が回転したときにコンパスを表示するかどうかを指定。
Androidではバグなのか表示されない。
iOSは環境がないので未確認だが、問題なく表示されるらしい。 

githubのissuesに投稿されている（そしまだ解決していない)
[Compass cannot be displayed](https://github.com/flutter-mapbox-gl/maps/issues/685)

## cameraTargetBounds
```dart
CameraTargetBounds cameraTargetBounds = CameraTargetBounds.unbounded
```

## styleString
```dart
String? styleString
```

地図のスタイルの指定。
デフォルトのスタイルを使用する場合は省略する。
Mapbox Studioで生成したスタイルを使用する場合に指定する。


## minMaxZoomPreference
```dart
MinMaxZoomPreference minMaxZoomPreference = MinMaxZoomPreference.unbounded
```

ズームの最小と最大値の設定


## rotateGesturesEnabled
```dart
bool rotateGesturesEnabled = true
```
地図の回転をさせる操作を有効にするかどうかの指定。

## scrollGesturesEnabled
```dart
bool scrollGesturesEnabled = true
```

地図をスクロールさせる操作を有効にするかどうかの指定。


## zoomGesturesEnabled
```dart
bool zoomGesturesEnabled = true
```

地図を拡大・縮小させる操作を有効にするかどうかの指定。


## tiltGesturesEnabled
```dart
bool tiltGesturesEnabled = true
```
傾きに反応するかどうかを指定。
(マップの回転は反応するので何に影響するのだろうか？)

## doubleClickZoomEnabled
```
bool? doubleClickZoomEnabled
```

ダブルクリックのズームの有効無効。
Webのみらしい。

## dragEnabled
```
bool dragEnabled = true
```

ドラッグの有効無効を設定。
Androidでパフォーマンスに影響があるようなことが書いてあったがよくわからず・・・

## trackCameraPosition
```dart
bool trackCameraPosition = false
```

マップカメラの移動の通知を行うかどうか。
ChangeNotifierを使うらしい(がまだ私にそこまでの知識がない)


## myLocationEnabled
```dart
bool myLocationEnabled = false
```

現在位置の表示を行うかどうかを設定

## myLocationTrackingMode
```dart
MyLocationTrackingMode myLocationTrackingMode = MyLocationTrackingMode.None
```

現在位置のトラッキングモード。
MyLocationTrackingMode列挙型の以下の値を指定できる

- MyLocationTrackingMode.None  
    - 指定なし
- MyLocationTrackingMode.Tracking 
- MyLocationTrackingMode.TrackingCompass 
    - コンパスを使ったトラッキング。おそらく端末のセンサーを使っていると思われる。
    None→TrackingCompass に切り替えると、現在位置に移動して、マップが向いている方向に回転する。
    地図を動かしてしまうと、動作がキャンセルされる。
    現在位置に追随してかつ、地図を向いている方角に回転させるような動作をさせたい場合はこの値を設定するだけではできない。
- MyLocationTrackingMode.TrackingGPS  
    - GPSを使ったトラッキング
    None→TrackingGPS に切り替えると、現在位置に移動して、マップが向いている方向に回転する。
    地図を動かしてしまうと、動作がキャンセルされる。
    現在位置に追随してかつ、地図を向いている方角に回転させるような動作をさせたい場合はこの値を設定するだけではできない。
- MyLocationTrackingMode.TrackingGPSNorth 
- MyLocationTrackingMode.NoneCompass  
- MyLocationTrackingMode.NoneGPS   

## myLocationRenderMode
```dart
MyLocationRenderMode myLocationRenderMode = MyLocationRenderMode.COMPASS
```
現在位置のアイコンの指定
MyLocationRenderMode列挙型の以下の値を指定する

- MyLocationRenderMode.NORMAL 
- MyLocationRenderMode.COMPASS  
- MyLocationRenderMode.GPS 


## logoViewMargins
```dart
Point<num>? logoViewMargins
```

おそらくMapboxのロゴのマージン


## compassViewPosition
```dart
CompassViewPosition? compassViewPosition
```

コンパスの表示位置を指定する。


## compassViewMargins
```dart
Point<num>? compassViewMargins
```

コンパスのマージンを指定する

## attributionButtonPosition
```dart
AttributionButtonPosition? attributionButtonPosition
```

## attributionButtonMargins
```dart
Point<num>? attributionButtonMargins
```

## onMapClick
```dart
OnMapClickCallback? onMapClick
```

マップをタップした際に呼び出されるコールバック。

## onUserLocationUpdated
```dart
OnUserLocationUpdated? onUserLocationUpdated
```


## onMapLongClick
```dart
OnMapClickCallback? onMapLongClick
```

マップをロングタップした際に呼び出されるコールバックを指定。
Webだとダブルクリックで反応した。

## onAttributionClick
```dart
OnAttributionClickCallback? onAttributionClick
```

## onCameraTrackingDismissed
```dart
OnCameraTrackingDismissedCallback? onCameraTrackingDismissed
```

## onCameraTrackingChanged
```dart
OnCameraTrackingChangedCallback? onCameraTrackingChanged
```

## onCameraIdle
```dart
OnCameraIdleCallback? onCameraIdle
```

## onMapIdle
```dart
OnMapIdleCallback? onMapIdle
```

## annotationOrder
```dart
List<AnnotationType> annotationOrder = const [AnnotationType.line, AnnotationType.symbol, AnnotationType.circle, AnnotationType.fill]
```

## annotationConsumeTapEvents
```dart
List<AnnotationType> annotationConsumeTapEvents = const [AnnotationType.symbol, AnnotationType.fill, AnnotationType.line, AnnotationType.circle]
```

# 参照

- [MapboxMap constructor ](https://pub.dev/documentation/mapbox_gl/latest/mapbox_gl/MapboxMap/MapboxMap.html)
- [Flutter + Mapbox で Symbol をタップして id を取得・表示する](https://zenn.dev/hmatsu47/articles/9102fb79a99a98)