如何创建缓冲区并确定mapPolyLine缓冲区内的内容? C#

时间:2011-07-21 09:57:09

标签: windows-phone-7 buffer polyline

我正在尝试围绕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)?

1 个答案:

答案 0 :(得分:0)

好吧,想一想:GIS中的缓冲区是一个多边形。查看点是否在其中的唯一方法是能够创建该形状(无论是否显示它)并运行任何可用的多边形点分析。 (我不知道Bing Maps是否提供该功能)。理想情况下,我会通过在端点处绘制圆弧(使用它们作为圆弧的中心)来实现它,然后使用折线的轮廓连接它们。您需要确定每个折线点的斜率和交点以执行此操作。或者更好地说,对于从折线点偏移一定距离(无论是在屏幕坐标还是墨卡托中)的线,交叉点是什么。一旦完成,你可能有一个合适的多边形,虽然我使用的多边形点代码不适用于弧。您可能需要使用直线段来近似。

我觉得你很痛苦,因为我也不想用ArcGIS DLL来阻止应用程序,尽管它们的功能。我意识到这是需要做什么的准系统概述。但这是我打算做的事情。