【问题标题】:Changing Field of View on MapControl camera changes altitude of camera改变 MapControl 相机的视野改变相机的高度
【发布时间】:2020-06-07 08:52:41
【问题描述】:

我正在创建一个应用程序,我们可以使用 MapControl 相机来改变观察方向(航向)、滚动角度、观察高度(俯仰)和视野(放大或缩小场景)。

当我开始缩小视角时,相机开始增加高度,当靠近地面或地图表面时,效果越明显。改变 Pitch 值时也会发生同样的情况,在某些角度相机也会增加高度。

我检查了相机位置值的高度值,MapControl.ActualCamera.Location.Position.Altitude 值始终相同。当相机只是“卡”在地面上时,这种效果会更加明显(尽管相机和地面之间总是有 20 米左右的距离。

这是我用来设置 MapCamera 高度、Pitch、FoV 的代码...

newCamera = new MapCamera(cameraVR.GroundGeopoint, cameraVR.Heading, cameraVR.Pitch, cameraVR.Roll, cameraVR.FoV);
MapScene mapScene = MapScene.CreateFromCamera(newCamera);
mapPosition.TrySetSceneAsync(mapScene, MapAnimationKind.None);

GroundGeopoint 是相机“粘”在地面上的位置,即使它总是悬浮在地面上方几米处。

【问题讨论】:

  • 相机高度与地图缩放级别有关,只读,不能手动设置。
  • 不能直接手动设置,但是创建一个MapCamera,用这个相机创建MapScene,可以设置一个高度。 (我已经更新了上面的文字)。
  • 改变 Pitch 值也会改变相机高度,只是实现了更多的测试。

标签: uwp bing-maps uwp-maps


【解决方案1】:

改变俯仰角将改变报告的相机高度。这是完全可以预料的。当您相对于表面倾斜相机时,它将接近表面。您正在围绕中心点锚定的球体上移动相机。例如,如果您请求 45 度的俯仰角,我预计您的高度会降低 1.4 倍。更改视野通常不应更改高度,只有一个小例外 - FOV 更改可能会导致显示的细节级别发生更改。随着加载更高或更低级别的细节,由于数据的准确性,报告的高度可能会有一些微小的变化,但我认为这些变化不会很大。还有一个你可能会遇到的最低海拔高度。最低高度取决于源数据的分辨率,一般在 50m 左右。 目前不支持换卷。

【讨论】:

  • 也许我还没有完全理解,但正如我所说的,从代码中可以看出,我不是直接在 MapControl 上更改 Pitch,而是通过摄像头,更改 Pitch、Roll , FoV, ... 相机 (MapCamera),始终以相机为中心旋转。
【解决方案2】:

滚动应用于 MapCamera 和一个小 FoV(相当于 93 毫米相机镜头),显示一个非常低多边形的场景。更宽或更窄的 FoV 没有细节差异。我希望在进一步的表面网格和纹理中获得更多细节。 MapCamera 海拔高度为 2042.64m(截图左下方)。

使用 35 毫米相机镜头,在屏幕截图中心显示与缩放版本相同的山脉细节。 MapCamera 1979.63m 的海拔高度。仅改变 FoV 就有超过 60m 的差异。

【讨论】:

  • 我认为您可能会达到这里的最低高度限制。如果您尝试远离地表的视图,您会看到相同的高度变化吗?最小高度限制取决于俯仰角和 FoV,以及源数据的分辨率。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
相关资源
最近更新 更多