2017-04-06 12 views
1

Windows 10のCreatorsのアップグレード(ビルド15063)後、UWPアプリケーションのMapControlの子はマップ自体を移動またはズームするときにマップ上で修正されなくなりました。 特定のズームレベルから、地図をズームしたときの動作の違いに気付きました。その点から、視覚的な「地球」効果が注目に値する。説明が難しいですが、地図は私の意見では純粋な平面(2D)ではありません。W10クリエーターの更新後にUWP MapControlの子が固定されていない

マップを移動やズーム時にレーダーオーバーレイが同じ位置にとどまる見ることができるように、ビルド14393で、ここで所望の出力を参照してください: 画像:ビルド15063上https://www.regenthetin.nl/files/desired_behaviour_v14393.gif

望ましくない出力、オーバーレイはゆっくり動きます 画像::https://www.regenthetin.nl/files/undesired_behaviour_v15063.gif

責任コードブロック:

スニペット1

// Add children to MapControl at specified location 
var radarImgPosition = new Geopoint(new BasicGeoposition() 
{ 
    Latitude = 59.60, 
    Longitude = -12.00 
}); 

RadarMap.Children.Clear(); 
if (RadarMap.Children.Count == 0) 
{ 
    RadarMap.Children.Add(radarImg); 
    MapControl.SetLocation(radarImg, radarImgPosition); 
} 
マップ付き

スニペット2

private void RadarMap_ZoomLevelChanged(MapControl sender, object args) 
{ 
    Windows.Foundation.Point southWestPoint; 
    RadarMap.GetOffsetFromLocation(new Geopoint(new BasicGeoposition() 
    { 
     Longitude = -11.9687, 
     Latitude = 46.9106 
    }), out southWestPoint); 

    Windows.Foundation.Point northEastPoint; 
    RadarMap.GetOffsetFromLocation(new Geopoint(new BasicGeoposition() 
    { 
     Longitude = 15.5080, 
     Latitude = 60.0247 
    }), out northEastPoint); 

    double radarImgWidth = northEastPoint.X - southWestPoint.X; 
    double radarImgHeight = Math.Abs(northEastPoint.Y - southWestPoint.Y); 

    DisplayInformation displayInformation = DisplayInformation.GetForCurrentView(); 
    double scaleValue = (displayInformation.RawPixelsPerViewPixel * 100.0); 

    radarImg.Height = (radarImgHeight)/(scaleValue/100); 
    radarImg.Width = (radarImgWidth)/(scaleValue/100); 
} 

私は数時間のためにそれで調べましたが、私は今のところ解決策を見つけることができませんでした。私は誰かが私を助けることを願っています

Dev config:Visual Studio 2017 i.c.m Windows 10 CreatorsはSDKを更新します。

+0

プロジェクト内のターゲットSDKとは何ですか? –

+0

こんにちはStefano、私は新しいビルド(15063)に目標を変更しました。しかし、MapControlの動作は、下位バージョンを対象とする場合と同じです。非常に迷惑です。利用可能なソリューションがない場合は、Googleマップに切り替えて、ブラウザ要素に埋め込みます。失望ですが、同じユーザーエクスペリエンスを保証する唯一の方法です。あなたは他の提案がありますか? –

+0

これはバグです。古いSDKをターゲットにした場合、その動作は変更しないでください。 このバグをMicrosoftに報告する必要があります。 –

答えて

1

私の問題の解決策が見つかりました。私はあなたの気持ちが関連していると感じています。背景:私のMapControlにはXAML要素が子としてあり、要素が表示されている間に位置を設定および変更します。この子は既に説明したスレッドオープナと同じ効果を示しました。

新しいMapControl(クリエイターの更新版)も、子供を配置するときに高度を考慮に入れていることが判明しました。言い換えれば、XAMLの子はフラップマップ上ではなく、スペース内に配置されます。私の推測は、MapControlの新しい擬似3Dエフェクトの結果です。

ソリューションは、地形参照系をspecifingし、0に高度を設定することにより、表面に子を配置することである。

 var location = new Geopoint(new BasicGeoposition 
      { 
       Latitude = currentLatitude, 
       Longitude = currentLongitude, 
       Altitude = 0 
      }, 
      AltitudeReferenceSystem.Terrain); 
     MapControl.SetLocation(myChild, location); 
関連する問題