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メソッドを使用してこれを行うより効率的な方法はありますか?マップの縮尺方法に関するこの古いスレッドを見つけましたが、私の場合、マップに保存されているズームレベルは1〜20の数値であり、ズームジャンプごとの縮尺%は示されていません。

4

1 に答える 1

0

ドキュメントを確認することでこれを解決しました。私が本当に必要としていたのは、ポイントではなくジオ座標を受け入れるメソッドを備えた、SDKによってすでに提供されているMapPolylineでした。それらをMapElementsまたはMapLayerの子として追加する必要があります。

于 2012-12-20T08:48:50.333 に答える