我正在使用全新的 Windows Phone 8 地图控件,但遇到了一个问题:我需要获取地图边界的 LocationRectangle,即纬度跨度和经度跨度。
使用 Bing 地图控件,您可以执行以下操作:
LocationRect bounds = map.Bounds;
...但是,这个新控件中似乎没有相关字段。任何人都可以提供帮助,还是我需要对各种缩放级别进行逆向工程并根据中心点、缩放级别和像素高度/宽度进行计算?
我正在使用全新的 Windows Phone 8 地图控件,但遇到了一个问题:我需要获取地图边界的 LocationRectangle,即纬度跨度和经度跨度。
使用 Bing 地图控件,您可以执行以下操作:
LocationRect bounds = map.Bounds;
...但是,这个新控件中似乎没有相关字段。任何人都可以提供帮助,还是我需要对各种缩放级别进行逆向工程并根据中心点、缩放级别和像素高度/宽度进行计算?
您可以使用视口转换方法,例如:
GeoCoordinate topLeft = yourMapInstance.ConvertViewportPointToGeoCoordinate(new Point(0, 0));
GeoCoordinate bottomRight =
yourMapInstance.ConvertViewportPointToGeoCoordinate(new Point(mapSize.Width, mapSize.Height));
return LocationRectangle.CreateBoundingRectangle(new[] { topLeft, bottomRight });
可能您可以直接使用 mapControl 实例的 renderSize,但要确定运行时的正确尺寸,我建议您监听“SizeChanged”事件。并且检查 mapsize 值不为 0 或 Infinite 可能也是一个好主意。
需要说明的是,如果您已经为 WP7 创建了大型应用程序,您仍然可以在 WP8 中使用原始 Bing 地图(尽管它们已被弃用)。
您可以在此处找到带有 WP8 的 Bing 地图的库:
C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Libraries
这对您来说是一个可行的解决方案,还是您仍然想切换到新地图?