3

bing マップ コントロールをタップすると、位置情報を取得しようとしています。入手方法はわかっているのですが、ViewModelで作りたいです。タップ イベントでは、インタラクションを使用します。

<map:Map CopyrightVisibility="Collapsed" LogoVisibility="Collapsed">
            <map:MapTileLayer>
                <map:MapTileLayer.TileSources>
                    <customMap:OpenStreetTile />
                </map:MapTileLayer.TileSources>
            </map:MapTileLayer>
            <map:MapLayer>
                <map:Pushpin Location="{Binding Location}" />
            </map:MapLayer>
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="Tap">
                    <cmd:EventToCommand Command="{Binding AddPushpinCommand}" PassEventArgsToCommand="True" />
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </map:Map>

GetPosition 関数を使用して、イベント引数から位置を取得できます。しかし、この関数にはUIElementパラメータが必要です。私はそうしました:

var source = (e.OriginalSource as MapLayer).ParentMap;
        var point = e.GetPosition(source);
        Location = source.ViewportPointToLocation(point);

しかし、それが良い解決策かどうかはわかりません。それを行う方法はありますか?ありがとう

4

1 に答える 1

2

まあ、あなたのアプローチは確かにうまくいきますし、時には十分に良いもので十分です. ;) ただし、MVVM 実装を 100% きれいにしたい場合は、ビュー (および MapLayer クラス) への参照を避ける必要があります。

Joost van Schaik は、動作を使用してこれを実現する方法を示すブログ投稿を書きました (これは Windows Phone 8 用ですが、Windows Phone 7 にも当てはまると確信しています): http://dotnetbyexample.blogspot.nl/2013/03 /simple-reverse-geocoding-with-windows.html

于 2013-04-01T12:25:34.440 に答える