Я создаю свой собственный путь/полилинию на карте, используя MapLayer и MapOverlay, все точки, захваченные GPS, хранятся в структуре, поэтому я могу получить к ним доступ. Любое время.
Теперь я хочу, чтобы путь преобразовывался в то же время, когда пользователь манипулирует картой (масштабирование и изменение положения карты), чтобы путь по-прежнему соединял одни и те же точки. Пока что мой метод очень требователен к процессору и выглядит ужасно
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? Я нашел эту старую тему о том, как масштабировать карту, но в моем случае уровень масштабирования, хранящийся на карте, представляет собой просто числовое значение от 1 до 20 без указания масштаба в % на скачок масштабирования.