WP8.1 MapControl.TrySetViewBoundsAsync不执行任何操作

时间:2015-10-02 19:42:39

标签: c# dictionary visual-studio-2013 windows-phone-8.1

我刚试过这个,但什么也没做。 TrySetViewBoundsAsync一直返回false,除非设置了MapAnimationKind.None,但仍然什么也没做。

我也尝试了TrySetViewAsync,这与上面相同,例如没有

我正在尝试将地图控件的边界设置为我刚绘制的点的路径

路线显示正常,但我无法缩放路线的范围

我可以设置一个手动缩放,但是如果路线很大或很小的话,那就不能做我想要的了。

有什么想法吗?

    private async void ShowMapRoute(List<BasicGeoposition> oMapRoute, bool ZoomToRoute = false)
    {
        if (oMapRoute.Count > 1)
        {
            MapPolyline oLine = new MapPolyline();
            oLine.StrokeColor = Colors.Red;
            oLine.StrokeThickness = 5;
            oLine.Path = new Geopath(oMapRoute);
            myMap.MapElements.Add(oLine);

            if (ZoomToRoute)
            {
                GeoboundingBox oBoundingBox = GeoboundingBox.TryCompute(oMapRoute);

                myMap.Center = new Geopoint(oBoundingBox.Center);

                bool bSuccess = await myMap.TrySetViewBoundsAsync(oBoundingBox, null, MapAnimationKind.Default);

                if (!bSuccess) myMap.ZoomLevel = 9;
            }
        }
    }

我在谷歌地图上手动检查了我的边界框的坐标,它们是正确的。

2 个答案:

答案 0 :(得分:0)

在没有任何代码示例的情况下很难看到你真正尝试过的东西......但我总是使用以下代码片段来设置绘制路线时缩放的地图correclty。

因此,基本地理位置列表是要在地图上绘制的实际路线,之后我使用带有计算边界框的TrySetViewBoundsAsync方法来缩放地图。

public async void SetMapPolyline(List<BasicGeoposition> geoPositions)
{
    var polyLine = new MapPolyline { Path = new Geopath(geoPositions), StrokeThickness = 4, StrokeColor = (Color)App.Current.Resources["StravaRedColor"] };
    BingMapControl.MapElements.Add(polyLine);

    await BingMapControl.TrySetViewBoundsAsync(GeoboundingBox.TryCompute(geoPositions), null, MapAnimationKind.None);
}

答案 1 :(得分:0)

我做了这个

bool bSuccess = false;

while (!bSuccess)
   bSuccess = await myMap.TrySetViewBoundsAsync(oBoundingBox, null, MapAnimationKind.Default);

似乎要做的伎俩