如何阻止冰点地图平移到坐标边界?
问题描述:
我在C#中使用bing maps components
用于WP7和我的自定义切片。
我覆盖Microsoft.Phone.Controls.Maps.TileSource
,一切ok,我可以使用我的瓷砖。如何阻止冰点地图平移到坐标边界?
但是,因为没有整个世界,我只想在一个城市范围内限制泛?
使用MapDragEventArgs
检查并阻止锅是正确的?
private void map_MapPan(object sender, MapDragEventArgs e)
{
Map m = (Map)sender;
// something...?
}
...或者我需要重写别的东西?在那种情况下,我需要重写什么?
谢谢。
答
我还没有和Bing地图的Windows Phone 7上的工作,由文档,以便去单独,我会做到以下几点:
- 始终初始化地图,使其视图边界矩形位于定义的图块区域内。
- 绑定到ViewChangeStart事件。 (或ViewChangeOnFrame,您将不得不尝试并找出使用哪个)
- ViewChangeStart的内部处理程序,检查TargetBoundingRectangle是否正确落在您的tile覆盖区域之外。
- 如果TargetBoundingRectangle落在您的覆盖区域之外,请找出一种方法来取消视图更改或手动将边界矩形重新设置回上一个有效状态。
假设一切都像我期望的那样工作,这应该限制用户地图导航到有限的区域,并避免在用户导航后视图“捕捉”回到其他地方的行为。
答
您可以轻松做什么,并且最好的方法是使用ViewChangeEnd事件并将地图设置回覆盖区域。
请参阅MSDN参考做到这一点:
如果您在ViewChangeStart上执行此操作,您将产生不良的倾斜效果,用户将无法理解此类行为发生的原因。这就是为什么我建议使用ViewChangeEnd更改地图的位置,以便您可以平移以匹配您的边界框。 – 2013-03-02 01:11:34
我曾经假设,由此产生的行为更接近实体边界,并且在用户导航到边缘时不会出现抖动。再次我没有实际执行这个,所以你提到的错误的倾斜效果可能会发生,如果是这种情况,那么使用ViewChangeEnd可能会更好 – 2013-03-02 07:27:27