2012-11-28 1 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

적어도 downvote로 가면 질문에 대한 잘못된 의견을 제공 할 수 있습니다. –

답변

0

나는이 문제를 문서화하여 해결했다. 필자가 실제로 필요한 것은 포인트 대신에 Geocoordinates를 받아들이는 메소드로, SDK가 이미 제공 한 MapPolyline입니다. MapElement 또는 MapLayer의 하위 요소로 추가하면됩니다.