I\'m developing a Windows Phone 8.1 app that works with Bing Maps.
During the rendering of this map I use the TrySetViewBoundsAsync
to set correctly my custom
Note that rbrundritt's solution will not work for oblique (tilted) views. In that case, the visible region resembles more an inverted trapezoid than a bounding box. Also the top-left corner might not be a valid location if the horizon is visible.
For Windows 10 Anniversary Update (version 1607), the MapControl
supports a new method GetVisibleRegion()
to help you with this.
The following should return you the view bounds of the map:
map.GetVisibleRegion(MapVisibleRegionKind.Full)
See the MapControl documentation for more details.
There isn't a built in method for this, however it can be done fairly easily. Here is a bit of code for this which I pulled from the Microsoft Maps Spatial Toolbox project:
public static GeoboundingBox GetBounds(this MapControl map)
{
Geopoint topLeft = null;
try
{
map.GetLocationFromOffset(new Windows.Foundation.Point(0, 0), out topLeft);
}
catch
{
var topOfMap = new Geopoint(new BasicGeoposition()
{
Latitude = 85,
Longitude = 0
});
Windows.Foundation.Point topPoint;
map.GetOffsetFromLocation(topOfMap, out topPoint);
map.GetLocationFromOffset(new Windows.Foundation.Point(0, topPoint.Y), out topLeft);
}
Geopoint bottomRight = null;
try
{
map.GetLocationFromOffset(new Windows.Foundation.Point(map.ActualWidth, map.ActualHeight), out bottomRight);
}
catch
{
var bottomOfMap = new Geopoint(new BasicGeoposition()
{
Latitude = -85,
Longitude = 0
});
Windows.Foundation.Point bottomPoint;
map.GetOffsetFromLocation(bottomOfMap, out bottomPoint);
map.GetLocationFromOffset(new Windows.Foundation.Point(0, bottomPoint.Y), out bottomRight);
}
if (topLeft != null && bottomRight != null)
{
return new GeoboundingBox(topLeft.Position, bottomRight.Position);
}
return null;
}