Преобразование пути/полилинии, соответствующее действию масштабирования/перемещения карты

Я создаю свой собственный путь/полилинию на карте, используя 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 без указания масштаба в % на скачок масштабирования.


person MLProgrammer-CiM    schedule 28.11.2012    source источник
comment
Если вы собираетесь понизить голос, по крайней мере, вы могли бы дать некоторые отзывы о том, что не так с вопросом.   -  person MLProgrammer-CiM    schedule 28.11.2012


Ответы (1)


Я решил это, просмотрев документацию. Что мне действительно было нужно, так это MapPolyline, уже предоставленный SDK, с методами, принимающими геокоординаты вместо точек. Вам просто нужно добавить их как MapElements или потомок MapLayer.

person MLProgrammer-CiM    schedule 20.12.2012