Panorama是如何实现的?我需要创建一个垂直的地图,类似于诺基亚地图

本文关键字:地图 一个 诺基亚 类似于 创建 垂直 何实现 实现 Panorama | 更新日期: 2023-09-27 18:00:46

背景:

我是银光/视窗手机的新手。

我想创建一个类似诺基亚地图的东西(windows phone 8版本)。在诺基亚地图中,当您单击搜索并得到搜索结果时,页面会分为两部分,上部是地图,下部是结果,您可以使用手指手势在地图和结果之间滚动。

我最初的解决方案是:制作一个有2行的网格,并动态更改(使用DoubleAnimation和样条线移动)网格行的高度。例如,当显示地图时,将收缩底部行的高度,而当显示底部行时,将缩小地图的高度。

然而,我很快发现,这可能不是诺基亚地图的实现方式。例如,如果我在最上面一行制作地图,并且当最上面一排的高度缩小时,地图的位置仍然在中心附近(它移动,但速度比缩小的行慢),这意味着地图本身并不像诺基亚地图那样"向上滚动"。更重要的是,如果地图上有弹出菜单(如诺基亚地图中的当前位置按钮),则弹出菜单也不会卷起。

理论上,上述问题仍然可以通过强制贴图来解决,并且在网格行高度变化期间弹出菜单也会向上滚动。但经过一些比较和观察,我认为诺基亚地图的上下移动就像一个具有更大垂直画布的全景图,你只需要显示画布的顶部或底部。

这让我好奇如何可能实现像垂直全景这样的东西。

我的问题,

  1. 在您看来,诺基亚地图是如何实现的?还有其他更简单的方法吗
  2. 是否可以将现有的"全景"控件自定义为"垂直全景"
  3. 如果我必须实现我自己的一个,如何实现它?我现在的想法是做一块大画布,自己画所有的东西?会不会太低了?有什么好的方法可以用垂直行为重新实现全景吗

非常感谢。

Panorama是如何实现的?我需要创建一个垂直的地图,类似于诺基亚地图

玩过它之后,我认为它比垂直全景更简单。

你的断言是正确的,它不是调整地图的大小,而是简单地将其从屏幕上移开。

以下是我的想法。

  1. 我相信他们有一个有2行的网格,两行的最小高度都在100px左右(还没有检查实际值)。这个缓冲区是为了当一个屏幕向上或向下滑动时,您可以看到另一个"屏幕"。执行搜索后,底部屏幕仅可见。然后,有一个点击和拖动处理代码,可以调整网格的整体上边距,使其上下滑动。这是基于手指位置的变化来完成的
  2. 不,我完全相信你必须手动制作
  3. 请参阅答案1中的我的想法

我希望这是有道理的。这是一个棘手的问题,但我觉得这是一条正确的道路。

我的建议是尝试选项3。你可以有一个页面大小的画布。垂直放置地图控件和结果控件。然后,您需要处理手势并调整每个控件的Canvas.Top属性以将其向上/向下移动。

说起来容易做起来难我知道。。。但如果是我,我会尝试这种方法。