WinRT两点之间的中心地图

时间:2014-08-21 09:32:34

标签: windows-runtime bing-maps windows-phone-8.1

我试图将两个点之间的Windows手机地图居中,调整中心和缩放以使这些点同时可见。

我是Android和IOS有功能可以做到这一点,例如这是在Android中如何做到这一点:

LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(myPos.getPosition());
builder.include(defaultPos.getPosition());
mapa.animateCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 50));

我如何在WinRT中做同样的事情?

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果您的目标是Windows Phone 8.1而不是WinRT(Windows 8 / 8.1),那么您可以执行以下操作:

var geoboundingBox = new Windows.Devices.Geolocation.GeoboundingBox(
new BasicGeoposition() { Latitude = 40, Longitude = -90 }, 
new BasicGeoposition() { Latitude = 45, Longitude = -100 });
map.TrySetViewAsync(new Geopoint(geoboundingBox.Center));

答案 1 :(得分:0)

对于Bing Maps WinRT控件,您可以通过两种不同的方式执行此操作。第一种是从两点创建LocationRect。这将为您的位置创建一个边界框。您可以使用地图上的SetView方法将地图视图设置为此LocationRect,该方法将居中并缩放到这些位置,或者您可以使用此LocationRect的Center属性设置地图视图,使其居中于这些两个位置,没有放大到地图。这样的事情应该有效:

var bounds = new LocationRect(new Location(40,-90), new Location(45,-100));
map.SetView(bounds.Center);

另一种方法需要更多的计算,但是一个很好的选择,可以知道你是否遇到了其他地图控件没有像我提到的第一个那样的简单解决方案。该方法包括计算两个位置之间的中心坐标。我有一篇关于如何从这里的旧版Bing映射中执行此操作的博客文章:http://rbrundritt.wordpress.com/2008/10/14/calculating-the-midpoint-of-a-line-segment/逻辑可以轻松迁移到其他编程语言。

听起来你很想在WinRT中使用Bing Maps进行开发。我建议查看我的免费电子书,了解如何创建位置智能Windows应用商店应用。它详细介绍了如何使用Bing Maps控件创建出色的应用程序。您可以在此处下载其副本:http://rbrundritt.wordpress.com/my-book/