2012-11-29 30 views
3

我想在我的地图中使用MapPolyLine来显示实时路线,希望它会移动/缩放this time。事情是在地图上之所以未行了,我找不到任何编程错误: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添加它时,和仿真器显示在地图上作为图形毛刺的顶部类的名称:

Emulator error on top, XAML on the right

+0

我也看到了XAML错误,但它仍在建立,当我在XAML中定义路径时,折线显示出来。 – user8709

回答

9

MapPolylinesMapPolygons应该被添加到MapElements集合...不是MapLayerMapOverlay

你应该能够让这个例子为你工作。

 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收集线,并添加新的岗位上线的路径,而不是预先给像我一样。这应该是可行的。

+0

注意到你已经回答了关于wp8的几个问题,并且我想知道你是否可以将这个问题解决 - http://stackoverflow.com/questions/13830053/windows-phone-8-gps-altitude-problems/13834473 – clarky

+0

我在寻找!谢谢。 – Andro

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);