2015-10-02 104 views
0

我剛試過這個,它什麼也沒做。除了設置MapAnimationKind.None時,TrySetViewBoundsAsync始終返回false,但仍然不執行任何操作。WP8.1 MapControl.TrySetViewBoundsAsync什麼也不做

我也試過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; 
      } 
     } 
    } 

我手動檢查了我的邊界框在谷歌地圖上的座標,它們是正確的。

+1

有同樣的問題就在剛纔,我那是因爲地圖控件還沒有完全負載。因此,添加一個Loaded事件處理程序,只做TrySetViewBoundsAsync就行了 – Depechie

+0

已加載的事件處理程序對我很有用@Depechie ..我認爲這是乾淨利落的最佳答案 –

回答

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); 
} 
+0

我已使用我的代碼更新了我的文章。我試圖重新格式化你的例子,但仍然沒有喜悅。 'MapAnimationKind.Default'返回true,但什麼都不做。所有其他'MapAnimationKind'返回false並且什麼都不做 – djack109

0

我這樣做

bool bSuccess = false; 

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

似乎這樣的伎倆