gpt4 book ai didi

windows-phone-7 - 在 Bing Maps 控件上计算和绘制路线

转载 作者:行者123 更新时间:2023-12-04 22:00:16 25 4
gpt4 key购买 nike

在我的 WP7(芒果)应用程序中,我需要将用户从一个点导航到另一个点。我知道有 Map 控件可以让您在上面绘制人员,但是您如何要求它为您绘制路径? (基于指定的目的地和用户的当前位置 - 但这种情况一直在变化,所以如果他走偏了,你如何更新路线?)

最佳答案

要使用用户当前位置更新 map ,请使用 GeoCoordinateWatcher并在数据绑定(bind)图钉更改时更新其位置。请记住将最小距离设置为较低的值,例如 5 米。

可以使用此 XAML 模板创建类似于 bing map 上的图钉:

<maps:Pushpin Background="{StaticResource PushpinLocationBrush}"
Location="{Binding MyLocation}">
<maps:Pushpin.Template>
<ControlTemplate>
<Grid>
<Rectangle Width="15"
Height="15"
Margin="0"
Fill="Black">
<Rectangle.Projection>
<PlaneProjection CenterOfRotationX="0"
LocalOffsetX="-2"
LocalOffsetY="5"
RotationZ="45" />
</Rectangle.Projection>
</Rectangle>
<Ellipse Width="7"
Height="7"
Margin="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Fill="Orange"
RenderTransformOrigin="0.339,0.232"
StrokeThickness="0" />
</Grid>
</ControlTemplate>
</maps:Pushpin.Template>
</maps:Pushpin>

可以使用 Bing map 获取地址的地理坐标。您可以在此处阅读有关 Bing 服务的更多信息: http://msdn.microsoft.com/en-us/library/cc980922.aspx -- 你需要的是 GeoCodeService

绘制路径相当复杂,特别是如果您希望它跟随道路。为此,您需要 Bing map 路线服务。

使用 RouteServiceReference 将服务添加到 Visual Studio作为名称,然后您可以使用以下代码获取路径片段,并将它们添加到您的 map 中。下面的 XAML 反射(reflect)了我将片段添加到的控件:
List<GeoCoordinate> locations = new List<GeoCoordinate>();

RouteServiceClient routeService = new RouteServiceClient("BasicHttpBinding_IRouteService");

routeService.CalculateRouteCompleted += (sender, e) =>
{
var points = e.Result.Result.RoutePath.Points;
var coordinates = points.Select(x => new GeoCoordinate(x.Latitude, x.Longitude));

var routeColor = Colors.Blue;
var routeBrush = new SolidColorBrush(routeColor);

var routeLine = new MapPolyline()
{
Locations = new LocationCollection(),
Stroke = routeBrush,
Opacity = 0.65,
StrokeThickness = 5.0,
};

foreach (var location in points)
{
routeLine.Locations.Add(new GeoCoordinate(location.Latitude, location.Longitude));
}

RouteLayer.Children.Add(routeLine);
};

RouteBingMap.SetView(LocationRect.CreateLocationRect(locations));

routeService.CalculateRouteAsync(new RouteRequest()
{
Credentials = new Credentials()
{
ApplicationId = "YOURBINGMAPSKEYHERE"
},
Options = new RouteOptions()
{
RoutePathType = RoutePathType.Points
},
Waypoints = new ObservableCollection<Waypoint>(
locations.Select(x => new Waypoint()
{
Location = x.Location
}))
});

相关 XAML:
<maps:Map x:Name="RouteBingMap"
AnimationLevel="None"
CopyrightVisibility="Collapsed"
CredentialsProvider="YOURBINGMAPSKEYHERE"
LogoVisibility="Collapsed"
ZoomBarVisibility="Collapsed"
ZoomLevel="12">
<maps:MapLayer x:Name="RouteLayer" />
</maps:Map>

关于windows-phone-7 - 在 Bing Maps 控件上计算和绘制路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7675313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com