【问题标题】:Issue with bing map inside a scrollviewer滚动查看器中的必应地图问题
【发布时间】:2011-05-02 21:45:18
【问题描述】:

我有一个 bing 地图,它与一个列表框一起位于滚动查看器内。

现在的问题是当滚动查看器的内容向下滚动时,“Bing 地图呈现在位于滚动查看器上方(滚动查看器边界之外)的其他元素之上”

<TextBlock Text="some text" />
<ScrollViewer>
    <map:Map ... />
    <ListBox ... />
</ScrollViewer>

怎么了?这是一个已知的错误吗? 我正在尝试在我的搜索结果列表框中包含一个小地图(与 windows phone bing 结果页面“本地”数据透视项相同)

一些观察: (1) 顶部仅渲染 bing 地图平铺图像(甚至没有图钉) (2) 位于滚动查看器下方的元素(在 xaml 中)正确呈现在地图顶部!

谢谢

【问题讨论】:

    标签: silverlight windows-phone-7 bing-maps scrollviewer


    【解决方案1】:

    只是不要将地图放在滚动查看器中。

    这也将防止在应用内滚动出现问题。

    【讨论】:

    • 当然这是一个“决定”,如果必须,我会做出。但我在这里寻找的是解决这个问题的方法,或者为什么会发生这种情况,或者这是一个已知的错误。操作系统本身在必应搜索结果页面的“本地”选项卡中具有这种效果(滚动条内的地图)。将必应地图放在滚动查看器之外会浪费屏幕上的大量有用空间。
    • 本机应用程序不是用 Silverlight 编写的,因此对可以做什么和不可以做什么有不同的限制。我们必须在框架暴露的范围内工作。
    • 我知道并非本机应用程序中的所有内容都可能在我的应用程序中完成。但我仍然不相信这是不可能的,因为(1)只有 bing 地图平铺图像呈现在顶部(甚至不是图钉)(2)位于滚动查看器下方的元素(在 xaml 中)正确呈现在顶部地图!
    【解决方案2】:

    好的,我终于找到了一个很好的解决方法,让它看起来很棒。 这是诀窍:

    一个。我们通过向页面/用户控件的构造函数添加以下行来禁用 bing 地图平铺图像:

    map.Mode.Content.Visibility = System.Windows.Visibility.Collapsed;
    

    两个。在地图控件之前,我们添加一个与地图控件具有相同宽度和高度的元素:

    <ScrollViewer>
        <Grid>
            <Image .../>
            <map:Map .../>
        </Grid>
        <ListBox ... />
    </ScrollViewer>
    

    三个。现在我们从“Bing 静态地图 API”中为 Image 元素构建一个 BitmapImage: http://msdn.microsoft.com/en-us/library/ff701724.aspx

    var url = "<bing static map api url for my location and zoom level - without any pushpin>";
    var uri = new Uri(url);
    imgStaticMap.Source = new BitmapImage(uri);
    

    这边:

    • 我们将拥有相同的地图(都是 bing 地图)
    • 静态地图在滚动条中正常显示
    • 在这种情况下会更好,因为这样我们的小地图上就不会产生加载效果(而不可避免地会产生加载效果)

    【讨论】:

      【解决方案3】:

      我将JeffWilcox.Maps 组件用于类似目的。这个静态地图在 ScrollViewer 中运行良好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多