2012-11-29 58 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);