我正在尝试围绕MapPolyLine创建一个缓冲区,以确定mapPolyLine中是否有任何内容。下面是MapPolyLine的代码:
private void routeService_CalculateRouteCompleted(object sender, CalculateRouteCompletedEventArgs e)
{
// If the route calculate was a success and contains a route, then draw the route on the map.
if ((e.Result.ResponseSummary.StatusCode == BingMapRouteService.ResponseStatusCode.Success) & (e.Result.Result.Legs.Count != 0))
{
// Set properties of the route line you want to draw.
System.Windows.Media.Color routeColor = Colors.Blue;
SolidColorBrush routeBrush = new SolidColorBrush(routeColor);
//MapPolyline routeLine = new MapPolyline();
App.routeLine.Locations = new LocationCollection();
App.routeLine.Stroke = routeBrush;
App.routeLine.Opacity = 0.65;
App.routeLine.StrokeThickness = 5.0;
// Retrieve the route points that define the shape of the route.
foreach (Location p in e.Result.Result.RoutePath.Points)
{
App.routeLine.Locations.Add(new GeoCoordinate(p.Latitude, p.Longitude));
}
如何获取MapPolyLine缓冲区的坐标(仅使用没有ARCGIS扩展的Bing Map API)?
答案 0 :(得分:0)
好吧,想一想:GIS中的缓冲区是一个多边形。查看点是否在其中的唯一方法是能够创建该形状(无论是否显示它)并运行任何可用的多边形点分析。 (我不知道Bing Maps是否提供该功能)。理想情况下,我会通过在端点处绘制圆弧(使用它们作为圆弧的中心)来实现它,然后使用折线的轮廓连接它们。您需要确定每个折线点的斜率和交点以执行此操作。或者更好地说,对于从折线点偏移一定距离(无论是在屏幕坐标还是墨卡托中)的线,交叉点是什么。一旦完成,你可能有一个合适的多边形,虽然我使用的多边形点代码不适用于弧。您可能需要使用直线段来近似。
我觉得你很痛苦,因为我也不想用ArcGIS DLL来阻止应用程序,尽管它们的功能。我意识到这是需要做什么的准系统概述。但这是我打算做的事情。