2017-02-17 15 views
2

私はBingマップを使用してWPFアプリケーションで作業しています。私に迷惑をかけることの1つは、ウィンドウを最大化してマウスホイールを使ってズームすると、マップの高さが小さく、その中にあるコンテナの境界まで十分にズームすることができます。ドキュメントを見て、これを制限する方法があるかどうかを調べました。ズームイン/アウトイベントの変更を登録してZoomLevelを制限することができます。 (私が持っている問題を示す添付の画像を見てください)。私が知りたいのは、XAMLまたはマップ上にプロパティやその他の手段がある場合、マップがズームレベルに関係なくウィンドウのサイズにかかわらず常にコンテナを埋めることができることです。私はHorizontalAlignment="Stretch" VerticalAlignment="Stretch"を設定しようとしましたが、これはまだズームアウトの問題を解決しません。どんな助けもありがとう。Bing Mapズームアウト伸び

xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF" 
<m:Map x:Name="MapControl" 
        HorizontalAlignment="Stretch" 
        VerticalAlignment="Stretch" 
        Center="{Binding CenterLocation, 
            Mode=TwoWay, 
            UpdateSourceTrigger=Explicit}" 
        CredentialsProvider="MAP_KEY" 
        ZoomLevel="{Binding ZoomLevel}"> 
       <m:Map.Children> 
        <TextBlock FontSize="20" 
           Foreground="Blue" 
           Text="{Binding ReportText}" /> 
        <m:MapItemsControl ItemTemplate="{StaticResource PinTemplate}" ItemsSource="{Binding WeatherItemSource}" /> 
       </m:Map.Children> 
      </m:Map> 

そしてここでは、グレーのエッジを持つ画像です:

enter image description here

答えて

1

あり、これを制限するためのプロパティがありませんが、簡単にマップを埋めるために必要とされているズームレベルを計算することができますコンテナ。ズームレベル1では、ワールドマップの高さ(マップコンテナと混同しないでください)は512ピクセルです。これはズームレベルごとに倍増します。ズームレベル2の高さは1024ピクセルのようになります。ズームレベル3の高さは2048ピクセルとなります。

4Kスクリーンは、約2000ピクセルの垂直解像度を持ちます。このことを念頭に置いて、地図を読み込んだりサイズを変更して地図を制限するズームレベルを決定するだけで、簡単なチェックが必要になるでしょう。

if(mapHeight < 512){ 
    minZoom = 1; 
} else if(mapHeight < 1024){ 
    minZoom = 2; 
} else if(mapHeight < 2048){ 
    minZoom = 3; 
} else{ 
    minZoom = 4; 
} 

あなたはすべての可能な画面サイズにズームレベルを計算するための、よりエレガントな解決策を持っているしたい場合は、あなたがこれを行うことができます:

minZoom = Math.Max(Math.Floor(Math.Log(mapHeight/256, 2)) + 1, 1); 
+0

、それは 'Math.Log(mapHeightすべきではありません/ 'Math.Log(mapHeight/256)'ではなく '256、2)'(すなわち、底2の対数)ですか?それに加えて、 'ZoomLevel'プロパティが' double'型であるので、ズームレベルを整数値に調整することは厳密には必要ではありません。 – Clemens

+0

私はテストアプリでもそれを持っていましたが、レスポンスに入力するときは忘れました。コピー/ペーストを使用していたはずです。 – rbrundritt

関連する問題