Windows runtime 两点之间的中心地图WinRT

Windows runtime 两点之间的中心地图WinRT,windows-runtime,bing-maps,windows-phone-8.1,Windows Runtime,Bing Maps,Windows Phone 8.1,我正在尝试将windows phone地图居中于两个点之间,调整“居中”和“缩放”以使这些点同时可见 Im Android和IOS有一些功能可以实现,例如,这是如何在Android中实现的: LatLngBounds.Builder builder = new LatLngBounds.Builder(); builder.include(myPos.getPosition()); builder.include(defaultPos.getPosition()); mapa.animateCa

我正在尝试将windows phone地图居中于两个点之间,调整“居中”和“缩放”以使这些点同时可见

Im 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中执行同样的操作


提前感谢。

对于Bing Maps WinRT控件,您可以通过两种不同的方式完成此操作。第一个是从两点创建LocationRect。这将为您的位置创建一个边界框。可以使用地图上的SetView方法将地图视图设置为此LocationRect,该方法将居中并缩放到这些位置,也可以使用此LocationRect的“中心”属性设置地图视图,使其居中于这两个位置,而无需放大地图。像这样的方法应该会奏效:

var bounds = new LocationRect(new Location(40,-90), new Location(45,-100));
map.SetView(bounds.Center);
另一种方法需要更多的计算,但如果您遇到其他贴图控件,而这些控件没有像我提到的第一个那样简单的解决方案,那么这是一个很好的选择。此方法包括计算两个位置之间的中心坐标。我在这里有一篇博文,是关于如何从一个非常古老的Bing地图版本中实现这一点的:逻辑可以很容易地移植到其他编程语言中


听起来你对WinRT中Bing地图的开发还不熟悉。我建议查看我的免费电子书,了解如何创建位置智能Windows应用商店应用程序。它详细介绍了如何使用Bing地图控件创建出色的应用程序。您可以在此处下载它的副本:

如果您的目标是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));

这些是bing地图控件的类,我看到Silverlight的LocationRectangle,但我使用WinRT API,有什么想法吗?LocationRect是WinRT的bing地图SDK的一部分:这是bing.maps命名空间(PC),但在手机上我需要使用Windows.UI.Xaml.Controls.maps,我看不到这些类或任何类似的类。我需要在Universal APP上这样做,电话和PCOk都有。首先,WP/WinRT没有通用映射控件。但是,在通用应用程序中使用Bing地图是可能的。我在这里写了一篇关于如何做到这一点的博文:你需要我提供的两段代码才能在一个通用应用程序中完成你想要做的事情。我知道,它看起来非常简单,类似于android或ios,但我找不到手机所需的类(Windows.UI.Xaml.Controls.Maps),我只能在PC上找到它(Bing.Maps)。请确保它是您正在创建的通用应用程序。通用应用程序适用于Windows Phone 8.1及以上版本。您只能在WP8.1应用程序中找到Windows.UI.Xaml.Controls.Maps命名空间。如果您查看我在前面的评论中提供的博客文章,它将向您展示如何使用条件编译符号在通用应用程序中访问此命名空间。