3

我正在尝试在我的地图中使用 MapPolyLine 来显示实时路线,希望这次它会移动/缩放。问题是地图上没有显示这条线,我找不到任何编程错误:

C#

MapLayer pathLayer;

//Constructor
 pathLayer = new MapLayer();
 MapPolyline line = new MapPolyline();
 line.StrokeColor = Colors.Red;
 line.StrokeThickness = 10;
 //line.Path.Add(several points); Tested, no effect
 MapOverlay overlay = new MapOverlay();
 overlay.Content = line;
 //overlay.GeoCoordinate = new GeoCoordinate(0,0); Tested, no effect
 //overlay.PositionOrigin = new Point(0.0, 1.0); Tested, no effect
 pathLayer.Add(overlay);
 MyMap.Layers.Add(pathLayer);


void geolocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)
{
  MapPolyline line = pathLayer.First(TrackPath).Content as MapPolyline;
  line.Path.Add(args.Position.Coordinate); // Checked values, line.Path adds them correctly
}

编辑:新信息。模拟器在尝试使用 XAML 添加它时显示错误,并且模拟器在地图顶部显示类的名称作为图形故障:

顶部是模拟器错误,右侧是 XAML

4

2 回答 2

9

MapPolylines并且MapPolygons应该添加到MapElements集合中......而不是 aMapLayer或 a MapOverlay

您应该能够使此示例为您工作。

        MapPolyline line = new MapPolyline();
        line.StrokeColor = Colors.Red;
        line.StrokeThickness = 10;
        line.Path.Add(new GeoCoordinate(47.6602, -122.098358));
        line.Path.Add(new GeoCoordinate(47.561482, -122.071544));
        MyMap.MapElements.Add(line);

在您的 GeoCoord 观察器中,您必须从地图MapElements集合中获取线,并将新位置添加到线的路径中,而不是像我一样预先定义。这应该是可行的。

于 2012-11-29T21:25:35.137 回答
0

在 Windows Phone 8.1 中尝试以这种方式添加点。“punkty”是我的收藏。

  List<BasicGeoposition> PosList = new List<BasicGeoposition>();
  foreach (var item in punkty)
  {
    PosList.Add(new BasicGeoposition()
    {
      Latitude = item.Position.Latitude,
      Longitude = item.Position.Longitude
    });
  }

  //Example of one point
  //PosList.Add(new BasicGeoposition()
  //{
  //  Latitude = 52.46479093,
  //  Longitude = 16.91743341
  //});

  MapPolyline line = new MapPolyline();
  line.StrokeColor = Colors.Red;
  line.StrokeThickness = 5;
  line.Path = new Geopath(PosList);

  myMap.MapElements.Add(line);
于 2015-11-30T16:19:28.740 回答