1

背景:

我是 Silverlight/Windows 手机的新手。

我想创建类似诺基亚地图(windows phone 8 版本)的东西。在诺基亚地图中,当你点击搜索,得到搜索结果时,页面被分成两部分,上面是地图,下面是结果,你可以用手指在地图和结果之间滚动.

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

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

嗯,理论上,上面还是可以通过强制map来解决的,而且Popup也会在网格行高变化的过程中向上滚动。但是经过一番对比和观察,我觉得诺基亚地图的上下移动就像一个全景图,垂直画布更大,你只需要显示画布的顶部或底部即可。

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

我的问题,

  1. 在您看来,诺基亚地图可能是如何实现的?还有其他更简单的方法吗?
  2. 是否可以将现有的全景控件自定义为垂直全景?
  3. 如果我必须实现自己的,如何实现?我目前的想法是制作一个大画布并自己绘制所有内容?水平会不会太低?有没有什么好的方法可以用垂直行为重新实现全景图?

非常感谢。

4

2 回答 2

1

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

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

于 2013-04-16T10:02:38.473 回答
1

玩了一会儿,我认为它比垂直全景更简单。

您的断言是正确的,它没有调整地图的大小,而只是将其移出屏幕。

所以这是我的想法。

  1. 我的信念是他们有一个有 2 行的 Grid,两者的最小高度都约为 100px 左右(尚未检查实际值)。这个缓冲区是为了让您在向上或向下滑动一个“屏幕”时可以看到另一个“屏幕”。底部屏幕仅在执行搜索后可见。然后,有一个点击和拖动处理代码,可以调整网格的整体上边距以上下滑动。这是根据手指位置的变化来完成的。
  2. 不,我非常确信您将不得不手动进行此操作。
  3. 请参阅我在答案 1 中的想法。

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

于 2013-02-25T03:49:25.997 回答