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に追加する必要があります...またはではありません。MapElementsMapLayerMapOverlay

この例をうまく機能させることができるはずです。

        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では、この方法でポイントを追加してみてください。「パンクティ」は私のコレクションです。

  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 に答える