1
エフェクト内のポリライン上の位置の残りの距離を計算します。 Google Maps Projection(fromLatLngToPoint)に依存するSnapToPolylineクラスがあり、最も近い点を計算して距離を返します。問題は、地図が開かれたときにファクトリメソッドがその場で作成するNavigatorMap Dependencyです。ngrx実行時依存性を伴う効果
実行時に現在アクティブなNavigatorMapオブジェクトをコンテナから解決できますか?
どうすれば解決できますか?とにかくこれをエフェクトで解決できますか、コントローラからSetDistanceを起動するだけですか?
@Injectable()
export class DistanceEffect{
constructor(private actions$: Actions,
private store$: Store<AppState>,
private injector: Injector
){}
@Effect()
updateDistance$ = this.actions$.ofType(SET_DIRECTION)
.withLatestFrom(this.store$)
.switchMap(([action, state]) => {
const navigatorMap = this.injector.get(NavigatorMap);
const direction: Direction = action.payload;
const coords = state.mapState.coords;
const snapToPolyline = new SnapToPolyline(navigatorMap, direction.polyline);
const distance = snapToPolyline.getRemainingDistAlongRoute(toLatLng(coords));
return of(new SetDistance(distance));
});
}