Repository navigation
Keep an unset camera property from the current camera, and honour an explicit 0 - #14
Merged
Merged
Conversation
…explicit 0 A camera built as MapCameraPosition(position = ...) reset zoom, bearing and tilt to 0 instead of leaving them where they were. The default is 0, so the value alone cannot say whether the caller asked for 0 (zoom 0 is the whole world) or said nothing. The camera now records which of zoom / bearing / tilt the caller gave (isZoomSpecified, ...), and MapViewState.moveCameraTo fills only the unset ones from the current camera via resolvedOnto(). Each property is resolved on its own, and an explicit 0 is used as given. The properties stay Double and read 0 when unset, so the providers, which only read them, are unchanged at the source level. The constructor now takes Double?, which the api baseline records. copy() keeps an unset property unset. Same change as ios-sdk-core and js-sdk-core.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
MapViewState.moveCameraTo(cameraPosition)で、カメラの zoom / bearing / tilt が未指定なら現在のカメラの値を引き継ぎ、明示的に 0 を指定したらそのまま 0 を使うようにしました。これまでは
MapCameraPosition(position = ...)で位置だけ渡しても、zoom / bearing / tilt が 0 にリセットされていました。デフォルト値が 0 なので、値を見ただけでは「0 を指定した」(zoom 0 = 世界全体)のか「何も指定していない」のかを区別できません。変更内容
MapCameraPositionのコンストラクタのzoom/bearing/tiltをDouble? = nullにしました。指定されたかどうかはisZoomSpecified/isBearingSpecified/isTiltSpecifiedで持ちます。Doubleのままで、未指定なら 0 と読めます。値を読むだけのプロバイダー側は、ソースの変更が不要です。doubleからjava.lang.Doubleに変わります。API ベースラインも更新しました(MapCameraPositionの部分だけです)。resolvedOnto(current)を追加しました。未指定のプロパティだけを、currentの値で埋めます。プロパティごとに個別に判定します。copy()は、未指定だったプロパティをコピー後も未指定のまま保ちます。MapViewState.moveCameraTo(cameraPosition)はresolvedOnto(_cameraPosition)を通してからコントローラーに渡します。paddingsはどのドライバーもまだ対応していないので、今回は対象外です。ios-sdk-core(MapConductor/ios-sdk-core#17)と js-sdk-core(MapConductor/js-sdk-core#7)にも同じ変更を入れています。
テスト
CameraPositionResolveTestを追加しました(位置だけ渡す・明示的な 0・プロパティごとの引き継ぎ・copy()・MapViewState経由)。testDebugUnitTestは 263 件すべて通り、assembleReleaseも成功します。プロバイダーモジュールは、この変更に対してビルドしていません。