Windows phone 8.1 获取地图角点geopoint
Windows phone 8.1 get map corners geopoint
我正在寻找角落的地理点
- 左上角
- 右上
- 左下角
- 右下
MapControl提供的信息是
- 中心(地理点)
- 缩放级别(双倍 min:1、max:20)
- 实际身高(双)
- 实际宽度(双)
根据这些信息我能找到角点吗?
我在想这样的事情:
double HalfHeight = Map.ActualHeight / 2;
double HalfWidth = Map.ActualWidth / 2;
这意味着 Center
地理点位于 HalfWdidth
(X) 和 HalfHeight
(Y) 上。这能以某种方式帮助我吗?
编辑: 我的问题与提到的 this question as rbrundritt 非常相似,但它只给出了 TopLeft 和 BottomRight。根据该问题的公认答案(由 rbrundritt 提供),我还完成了另外两个并将它们包装在扩展中,请在下面检查我的答案。谢谢 rbrundritt。
public static class MapExtensions
{
private static Geopoint GetCorner(this MapControl Map, double x, double y, bool top)
{
Geopoint corner = null;
try
{
Map.GetLocationFromOffset(new Point(x, y), out corner);
}
catch
{
Geopoint position = new Geopoint(new BasicGeoposition()
{
Latitude = top ? 85 : -85,
Longitude = 0
});
Point point;
Map.GetOffsetFromLocation(position, out point);
Map.GetLocationFromOffset(new Point(0, point.Y), out corner);
}
return corner;
}
public static Geopoint GetTopLeftCorner(this MapControl Map)
{
return Map.GetCorner(0, 0, true);
}
public static Geopoint GetBottomLeftCorner(this MapControl Map)
{
return Map.GetCorner(0, Map.ActualHeight, false);
}
public static Geopoint GetTopRightCorner(this MapControl Map)
{
return Map.GetCorner(Map.ActualWidth, 0, true);
}
public static Geopoint GetBottomRightCorner(this MapControl Map)
{
return Map.GetCorner(Map.ActualWidth, Map.ActualHeight, false);
}
}
我正在寻找角落的地理点
- 左上角
- 右上
- 左下角
- 右下
MapControl提供的信息是
- 中心(地理点)
- 缩放级别(双倍 min:1、max:20)
- 实际身高(双)
- 实际宽度(双)
根据这些信息我能找到角点吗?
我在想这样的事情:
double HalfHeight = Map.ActualHeight / 2;
double HalfWidth = Map.ActualWidth / 2;
这意味着 Center
地理点位于 HalfWdidth
(X) 和 HalfHeight
(Y) 上。这能以某种方式帮助我吗?
编辑: 我的问题与提到的 this question as rbrundritt 非常相似,但它只给出了 TopLeft 和 BottomRight。根据该问题的公认答案(由 rbrundritt 提供),我还完成了另外两个并将它们包装在扩展中,请在下面检查我的答案。谢谢 rbrundritt。
public static class MapExtensions
{
private static Geopoint GetCorner(this MapControl Map, double x, double y, bool top)
{
Geopoint corner = null;
try
{
Map.GetLocationFromOffset(new Point(x, y), out corner);
}
catch
{
Geopoint position = new Geopoint(new BasicGeoposition()
{
Latitude = top ? 85 : -85,
Longitude = 0
});
Point point;
Map.GetOffsetFromLocation(position, out point);
Map.GetLocationFromOffset(new Point(0, point.Y), out corner);
}
return corner;
}
public static Geopoint GetTopLeftCorner(this MapControl Map)
{
return Map.GetCorner(0, 0, true);
}
public static Geopoint GetBottomLeftCorner(this MapControl Map)
{
return Map.GetCorner(0, Map.ActualHeight, false);
}
public static Geopoint GetTopRightCorner(this MapControl Map)
{
return Map.GetCorner(Map.ActualWidth, 0, true);
}
public static Geopoint GetBottomRightCorner(this MapControl Map)
{
return Map.GetCorner(Map.ActualWidth, Map.ActualHeight, false);
}
}