-
Notifications
You must be signed in to change notification settings - Fork 13
datastore
Daisuke Sato edited this page Oct 5, 2021
·
1 revision
ナビゲーションに関連するデータを保持するヘルパークラス
L.779
- (void)requestRouteFrom:(NSString *)fromID
To:(NSString *)toID
withPreferences:(NSDictionary *)prefs
complete:(void (^)())complete
- サーバーにRoute, NodeMap, Featureを問い合わせる
- Route: ルートGeoJSON
- NodeMap / Feature: 周囲のPOIやLink、ノードなどを問い合わせる
-
ROUTE_CHANGED_NOTIFICATION
の通知を発行 - POIのリンクへのマッピング
-
ルートのHTTPリクエストが完了したら、データを解析する
-
- (void) analyzeFeatures:(NSArray*)features
L.889-
一時保管用のDictionaryとArrayを用意
-
各HLPObjectについて L.900
- リンクの場合
- リンクID->リンクをマップ
- 両端のノードIDに対して、ノードに接続している全てのリンクへのマップ
- エスカレーターのリンクの場合、エスカレーターリンクのリストに登録
- ノードの場合
- ノードID->ノードをマップ
- トイレもしくは施設の場合
- 施設ID->施設のマップ
- 施設リストへの登録
- リンクの場合
-
各出入口情報について L.942
- 出入口の名前が「#」の場合は、出入口情報として扱わない
- ドアPOI的な機能を車椅子モードで実現するためのトリック
- 出入口情報にノードおよび施設のオブジェクトを登録(IDで入っているので、オブジェクトの参照にする)
- 出入口情報の属するノードIDと出入口情報のマップ
- 出入口の名前が「#」の場合は、出入口情報として扱わない
-
プロパティに一時保管データをセットL.955
-
各リンクのオブジェクトのソース、ターゲットノードをID->オブジェクトに更新 L.964
-
各ノードに接続しているリンクのリストそれぞれについて L.968
- ノードから見たリンクの方向でソート。真北(0)から時計回り順。
-
エスカレーターの属性設定 L.979
- 今から進もうとするエスカレーターに対して
- 左右のどちらか、もしくは両方に隣接したエスカレーターがあるかチェック(2.5m以内)
- ある場合には、左右、同じ方向か逆方向か、上に行くか下に行くかを判定
- エスカレーターを進む場合に注意喚起するため
- 今から進もうとするエスカレーターに対して
-
L.1037 ~ L.1079 POIを最も近いリンクにマップする
- 当初ナイーブに全てのPOIと全てのリンクの距離を計算していたが、マップの肥大化に伴って処理時間が大幅に長くなってしまったため、ある位置の近傍にあるリンクを計算するためにGKQuadTreeを使う
- https://developer.apple.com/documentation/gameplaykit/gkquadtree
- L.882 convertFromGlobalは緯度経度をアンカーを基準にメートルに変換する関数
- データのx,yの最小、最大を求める L.1039
- GKQuadTreeを生成 L.1056
- 各リンクについて
- リンクの両端の位置にリンクを登録
- 両端の長さが3m以上ある場合、両端を1mずつ縮めた位置でリンクを登録というのを繰り返す
-
各POI、各出入口情報に対して、最近傍のリンク(同距離で複数ある場合がある)を取得して、それぞれのリンクのpoiリストに追加する L.1082~L.1149
- 最近傍で同距離: 50cm以内にあれば同距離とする
- HLPPOIはリンク、HLPEntranceは両端ノードで距離を測る
- TODO(BUG): リンクがリーフ(片方が終端)の場合に無条件で除外されているが、リーフが3m以上あるとおかしくなる気がする
-
-
- (NSArray*) nearestLinksAt:(HLPLocation*)loc withOptions:(NSDictionary*)option
L.1155- 最近傍のリンクを取得するメソッド(上記GKQuadTreeに依存している)
プロパティ | 説明 |
---|---|
@property NavDestination *to |
目的地 |
@property NavDestination *from |
開始地点 |
@property BOOL previewMode |
プレビューモード |
@property BOOL exerciseMode |
練習モード |
@property BOOL toolMode |
ツールモード(NavCogToolのとき) |
@property NSString* userID |
サーバーに送信するuserID[UIDevice currentDevice].identifierForVendor.UUIDString
|
@property HLPLocation *mapCenter |
現在の地図の中心 |
@property (readonly) NSDictionary *buildingInfo |
現在地の建物情報 |
@property HLPLocation *loadLocation |
データを読み込んだ場所 |
@property (readonly) NSDictionary *idMap |
オブジェクトのidとオブジェクトのハッシュマップ |
@property (readonly) NSDictionary<NSString*, HLPEntrance*> *entranceMap
|
HLPEntranceオブジェクトのハッシュマップ |
@property (readonly) NSDictionary *poiMap |
HLPPOIオブジェクトのハッシュマップ |
@property (readonly) NSDictionary *nodesMap |
HLPNodeオブジェクトのハッシュマップ |
@property (readonly) NSDictionary *linksMap |
HLPLinkオブジェクトのハッシュマップ |
@property (readonly) NSDictionary *nodeLinksMap |
あるHLPNodeに関連するリンクのリスト |
@property (readonly) NSDictionary *linkPoiMap |
あるHLPLinkに関連するHLPPOIのリスト |
@property (readonly) NSArray *pois |
全てのHLPPOI |
@property (readonly) NSArray *escalatorLinks |
エスカレータのリンク |
@property NSTimeInterval start |
ナビゲーション開始時刻 |
NavDestination L.34 ▲
- 目的地(ナビ開始地点)のオブジェクト
- プロパティ一覧
プロパティ | 説明 |
---|---|
@property (readonly) NavDestinationType type |
タイプ |
@property (readonly) NSString* name |
名前 |
@property (readonly) NSString* namePron |
名前(よみ) |
@property (readonly) NSString* _id |
identifier |
@property (readonly) NSString* singleId |
複数のidentifierがある場合に最初のid |
@property (readonly) NSDictionary* filter |
目的地リスト絞り込みに使う |
@property (readonly) NSString* label |
目的地リスト絞り込みのラベル |
@property (readonly) HLPLandmark* landmark |
ランドマーク |
@property (readonly) NSArray<HLPLandmark*>* landmarks |
複数のランドマーク |
定数 | 説明 |
---|---|
NavDestinationTypeLandmark | ランドマークによる目的地 |
NavDestinationTypeLocation | 位置による目的地(現在地) |
NavDestinationTypeSelectStart | 開始地点を選択(未選択状態) |
NavDestinationTypeSelectDestination | 目的地を選択(未選択状態) |
NavDestinationTypeLandmarks | 複数ランドマークによる目的地(複数のトイレなど、一番近くに連れてく) |
NavDestinationTypeDialogSearch | 対話検索を表示する |
NavDestinationTypeDirectoryItem | 検索ディレクトリ |
NavDestinationTypeFilter | 検索フィルタ |