2012-11-28 30 views
3

我創建的地圖使用MapLayer和MapOverlay我自己的路/折線路徑/折線,通過GPS採集的所有點都存儲在一個結構,這樣我可以訪問它們。任何時候。對應的變換地圖縮放/移動操作

現在,我想的路徑,在地圖是由用戶(縮放,地圖復位)操縱,因此路徑仍然加入同一分同一時間變換。到目前爲止,我的方法是非常消耗CPU,看起來很糟糕

GeocoordinateList _coordinates; 
MapLayer pointsLayer; 

private void MyMap_ZoomLevelChanged(object sender, MapZoomLevelChangedEventArgs e) 
{ 
     repositionPoints(); // This is done other way but for the sake of brevity 
} 

private void repositionPathPoints() 
{ 
     try 
     { 
     Polyline path = (Polyline)pointsLayer.First(TrackPath).Content; // retrieves MapOverlay corresponding to line 
     path.Points.Clear(); 
     path.Points = new PointCollection(); 
     foreach (Geocoordinate coord in _coordinates) 
     { 
      path.Points.Add(MyMap.ConvertGeoCoordinateToViewportPoint(coord)); 
     } 

     } 
     catch (Exception exc) 
     { 
      Debug.WriteLine(exc.Message); 
     } 
} 

是否有任何更有效的方法來使用XAML方法來做到這一點?我發現this old thread關於如何縮放地圖,但我的情況下,由地圖存儲在縮放級別爲1只是一個數值20,每跳變焦沒有跡象顯示的規模%。

+2

如果你打算至少投降,你可以提供一些關於問題有什麼問題的反饋。 –

回答

0

我通過閱讀文檔解決了這個問題。我真正需要的是已經由SDK提供的MapPolyline,其方法接受地理座標而不是點。您只需將它們添加爲MapElement或MapLayer的子項即可。