## V10対応まとめ ### PioneerNaviSDK frameworkの課題点 * Sampleアプリなどで使用する際に、SDKのコンパイル時にMapboxMapsのモジュールが見つからずビルドに失敗する * PioneerNavi.frameworkを生成時にPioneerNavi.framework/PioneerNaviのファイルが作成されず失敗する MapboxMapsの課題点 * オフラインマップのキャッシュサイズの割り当てがv10.7.0現在、不可能。[CHANGELOG](https://github.com/mapbox/mapbox-maps-ios/blob/main/CHANGELOG.md#breaking-changes-%EF%B8%8F-7)(質問事項一覧表No2) * PIO_IntersectionMapで使用している`showsUserLocation`がv10で代替先が見つからない(質問事項一覧表No3) ### v6からv10の主な影響箇所 #### Annotation https://docs.mapbox.com/ios/maps/guides/migrate-to-v10/#annotations | V10 | V6 | 説明 | | --- | --- | --- | | PointAnnotation | MGLPointAnnotation | classからstructに変更され、サブクラスで拡張できなくなった。選択状態の変化時のDelegateがなくなった。Annotationがタップされた時に、紐ずくCallouViewが自動表示されなくなった。 | | PolyLineAnnotation | MGLPolyLineAnnotation | 同上 | | ViewAnnotation | MGLViewAnnotation | UIView + ViewAnnotationOptionsでViewAnnotationを生成されるようになった。Annotationとの紐付けは、ViewAnnotationOptionsで行う | | ViewAnnotation | MGLCalloutView | ViewAnnotationで統一された | | AnnotationInteractionDelegate | -mapView:didDeselectAnnotation | Annotationのタップ時のdelegate | Annotationの追加や削除を行う場合は、各AnnotationManagerで行う。 Annotationのタップの検出のdelegateもAnnotationManagerでもつ。 #### Layer https://docs.mapbox.com/ios/maps/guides/annotations/style-layers/ | V10 | V6 | 説明 | | --- | --- | --- | | LineLayer | MGLLineStyleLayer | 線の表示 | | CircleLayer | MGLCircleStyleLayer | 円の表示 | | FillExtrusionLayer | MGLFillStyleLayer | 3のレイヤーを組む場合に使用する| idを引数にインスタンスを生成をするのは変わらないが、sourceの設定は別になる。 Annotationよりも詳細または高度な表示を行う場合はLayerを使用する。 Json形式のデータの表示も扱える。 #### Location https://docs.mapbox.com/ios/maps/guides/user-location/ | V10 | V6 | 説明 | | --- | --- | --- | | PuckType | MGLUserLocationAnnotationView | 現在位置の見た目を指定し、表示する。Puck2DConfigureで見た目を詳細設定できる。AnnotationViewではなくなった。 | LocationProvider | MGLLocationManager | ほぼそのまま置き換わった | mapview.location.options.puckType = .puck2D()でユーザのイメージをカスタマイズする。 カメラが位置情報を追跡するにはViewportを使用します。customStatusとtransitionsで拡張することも可能 ### PioneerNaviの変更点 #### Annotation | クラス | 説明 | | ---- | --- | | PIO_MapMarker | PIO_MapMarker自身は、Annotationに関する情報を保持するのみのクラスに変更した。makePointAnnotation()によりPointAnnotationを生成するようにした | | PIO_MapCalloutView | UIViewを継承する。AnnotationViewとして追加する | | PIO_ItemMarker | CalloutViewと同様の対応 | #### Location | クラス | 説明 | | ---- | --- | | PIO_UserLocationMarker | v10では不要なため削除した | | PIO_LocationManager | LocationProviderを継承するように変更した | ### Sampleアプリ上で確認しているSDKの不具合 不具合 * 自車位置にフォーカスしない * アプリを起動した際に自車位置の中央で表示されない * マップモード変更時に自車位置にフォーカスできない * 目的地検索で目的地を設定できるが、目的地にフォーカスされない * 自車位置のイメージがおかしい * 赤い矢印の先端に白点が表示されてしまう * topImageとshadowImageの両方に自車イメージを設定する必要がある? * マップモードを変更できない * ノースアップとヘディングアップのモードが切り替わらずアイコンも変わらない * 交差点拡大図表示されない * マップ内のフォントやアイコンが微妙に違う * ルート探索でルート線がひかれない * ルート案内の旗を案内終了しても消せない * マップのロングタップでマーカーを刺して、それをタップした時に“delete”または“delete all”の選択肢が出ない * Annotationタップ時にMGLCalloutViewが自動表示されていた(presentCallout())。AnnotationInteractionDelegateでAnnotationタップ時の処理として、CalloutViewを表示する処理が必要 * マーカーのドラッグ&ドロップに対応する * * 構造体のため、v6の時のようにドラッグ機能を追加の拡張ができない。ドラッグ機能を実装するには、ViewAnnotationとしてPointAnnotationを実装するか、[UIPanGestureRecognizerを使用してPIO_Mapを拡張するか](https://github.com/mapbox/mapbox-maps-ios/issues/829#issuecomment-968055970)が考えられる。 * Setting>地図表示>デザイン をMapFan_R.jsonに変更してもデザインが変わらない * Amebaが表示されない Sampleアプリで確認できなかった処理 * インシデント表示ができるかどうか * 渋滞情報を表示できるかどうか