4

我有一堆 GeoCoordinate 对象,我希望将它们显示为折线(以显示一个人所走的路径)。

我不成功的尝试(不显示任何行):

var map = new Map(); // Nokia Maps
var layer = new MapLayer();
var overlay = new MapOverlay();
var polyline = new MapPolyline();

var gc = new GeoCoordinateCollection();
foreach(var geo in MyGeoCoordinateList) {
  gc.Add(geo);
}

polyline.Path = gc;
polyline.StrokeColors = Colors.Red;
polyline.StrokeThickness = 3;

overlay.Content = polyline;

layer.Add(overlay);
map.Layers.Add(layer);
LayoutRoot.Children.Add(map);
4

2 回答 2

3

事实证明,要显示路径(它只是连接点而不像 Mike Brown 的示例中那样遵循道路),您需要将折线添加到 MapElements 对象,即:

var map = new Map(); // Nokia Maps 
var polyline = new MapPolyline();

var gc = new GeoCoordinateCollection();
foreach(var geo in MyGeoCoordinateList) {
  gc.Add(geo);
}

polyline.Path = gc;
polyline.StrokeColors = Colors.Red;
polyline.StrokeThickness = 3;

map.MapElements.Add(polyline);
LayoutRoot.Children.Add(map);

作为奖励,这里是如何设置地图,使其包含视口中的点(带有漂亮的动画):

map.SetView(LocationRectangle.CreateBoundingRectangle(MyGeoCoordinateList, MapAnimationKind.Parabolic);
于 2012-11-26T16:44:04.217 回答
2

我想做同样的事情,我使用了一个 GeoQuery 传递所有的航点。该查询生成了一条路线,然后我将其显示在 UI 上。

var query = new RouteQuery();
query.Waypoints = new[]
{
   new GeoCoordinate(40.7840553533410,-73.9764425910787),
   new GeoCoordinate(40.7833068308611,-73.9745997113487),
   new GeoCoordinate(40.7826229881351,-73.9730985576614),
   new GeoCoordinate(40.7821147220884,-73.9719513345183),
   new GeoCoordinate(40.7809503161196,-73.9724639235822),
   new GeoCoordinate(40.7803311395532,-73.9721954245488),
   new GeoCoordinate(40.7795640919224,-73.9729398991417),
};
query.TravelMode = TravelMode.Walking;
var result = await query.GetRouteAsync();
var mapRoute = new MapRoute(result);
mapRoute.Color = Colors.Magenta;
mainMap.AddRoute(mapRoute);

mainMap 是我的 UI 中的地图控件。该查询创建了一条遵循可用路径的路线(因为我将其标记为步行路径,所以它使用了中央公园的人行道)。

于 2012-11-26T03:49:09.253 回答