2012-11-01 56 views
2

我使用全新的Windows Phone 8 Map控件,但遇到了一个问题:我需要获取地图边界的LocationRectangle,换言之,纬度跨度和经度跨度。Windows Phone 8地图控制 - 如何获取地图范围

随着Bing地图的控制,你可以做:

LocationRect bounds = map.Bounds; 

...然而,似乎是在这个新的控制没有相关的领域。任何人都可以提供帮助,还是需要对各种缩放级别进行逆向工程,然后根据中心点,缩放级别和像素高度/宽度进行工作?

回答

8

您可以使用视转换的方法,如:

GeoCoordinate topLeft = yourMapInstance.ConvertViewportPointToGeoCoordinate(new Point(0, 0)); 
GeoCoordinate bottomRight = 
yourMapInstance.ConvertViewportPointToGeoCoordinate(new Point(mapSize.Width, mapSize.Height)); 

return LocationRectangle.CreateBoundingRectangle(new[] { topLeft, bottomRight }); 

也许你可以直接使用地图控件实例的renderSize,但可以肯定有关运行正确的尺寸,我建议听“SizeChanged”事件。并检查mapsize值不是0或Infiniteis可能也是一个好主意。

+0

谢谢 - 这是我需要的。值得指出的是,在您的示例中,如果地图处于3D模式,则topLeft可能会返回为NULL - 根据API文档,如果指定的视口点位于“地平线上”,则情况会如此。所以你应该在创建LocationRectangle之前测试null。 –

+2

如果你的地图自动调整到页面大小,值得注意的是你应该使用ActualHeight和ActualWidth,否则他们只会是NaN –

0

为了清楚起见,如果您已经为WP7创建了大型应用程序,您仍然可以使用WP8中的原始Bing地图(尽管它们已被弃用)。
你可以在这里找到与Bing地图图书馆为WP8:

C:\ Program Files文件(x86)的\微软的SDK \的Windows Phone \ 8.0 \图书馆

这是一个可行的为你解决,还是你想切换到新的地图呢?

+0

谢谢你指出这一点。我想使用新的Map控件,因为向前推进,使用不推荐使用的控件可能不明智。 –

相关问题