4

Bing Maps WPFダイアログボックスを作成しましたが、プログラムで中心とズームレベルを設定したいと思います。を使用してSetValue()みましたが、渡すための適切なプロパティが見つかりませんでした。

これが私のBingMapsダイアログのXAMLです:

<Window 
        x:Class="RAPMkI.BingMapsDialog"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF"
        Title="BingMapsDialog" Height="378" Width="467">
    <Grid>
        <m:Map CredentialsProvider="Haha, nice try."/>
        <Button Content="Locate" Margin="0,0,0,0" Name="button1" HorizontalAlignment="Right" Width="Auto" Height="Auto" VerticalAlignment="Top" />
    </Grid>
</Window>

コードビハインドは次のようになります。

namespace RAPMkI
{
    /// <summary>
    /// Interaction logic for BingMapsDialog.xaml
    /// </summary>
    public partial class BingMapsDialog : Window
    {
        public BingMapsDialog(Location center, int zoom)
        {
            InitializeComponent();
        }
    }
}

渡したズームを使用して、初期化時にダイアログボックスの中心とズームレベルを設定する方法はありますLocationか?

4

4 に答える 4

8

これは古い質問であることは承知していますが、受け入れられた答えはもはや正しくないので、これが他の誰かの助けになることを願っています.

Centerプロパティはメソッドではないため、設定しようとしても機能しません。それにもしばらく頭を壁にぶつけて、アフリカ西海岸沖(緯度:0、経度:0)にたどり着きました。

あなたが探しているのはSetView(Location location, Double Zoom)

そのためのリファレンスは次のとおりです:
https://msdn.microsoft.com/en-us/library/hh709343.aspx

上記の例を書き直すには:

public BingMapsDialog(Location center, double zoom)
{
    InitializeComponent();
    theMap.SetView(center, zoom);
}

必要なものはこれだけです。

于 2015-03-03T22:21:09.690 に答える
4

最初にマップに名前を付けて、プログラムでマップにアクセスできるようにする必要があります。例えば:

<m:Map Name="theMap" CredentialsProvider="Haha, nice try."/>

次に、CenterおよびZoomLevelプロパティを変更したい場所に設定します。例えば:

public BingMapsDialog(Location center, int zoom)
{
    InitializeComponent();
    theMap.Center = center;
    theMap.ZoomLevel = zoom;
}

それが機能しない場合は、イベント ハンドラーでCenterandを設定する必要がある場合があります。ZoomLevelLoaded

于 2012-07-19T01:01:07.470 に答える
1

Map には、 ZoomLevel と Center の 2 つのバインド可能なプロパティがあります。できることは、ZoomLevel と Center を表す 2 つのプロパティを持つビュー モデルにビューをバインドすることです。

ZoomLevel は double であるため、スライダーを追加して、その値が viewmodel のズームレベルを表すものにもバインドされるようにすることをお勧めします。このようにして、スライダーを使用してズームを変更できます。

*バインドのモードを「TwoWays」にする必要があることに注意してください

于 2015-10-11T00:20:39.317 に答える
0

次のように、XAML ファイルで初期位置を定義できます。

<m:Map x:Name="mMap" 
               CredentialsProvider= "xxxxxxxxxx" 
               Center="40.13618,-0.45822" 
               ZoomLevel="15">
</m:Map>

次に、プログラムでセンターとズームレベルの両方を次のように設定できます。

mMap.SetView(mylocation, myzoomlevel) 'mylocation -> Location, myzoomlevel -> Double

または個別に:

mMap.Center = mylocation
mMap.ZoomLevel = myzoomlevel
于 2017-10-09T07:49:44.013 に答える