1

Microsoft Surface 2.0(現在はPixelSenseとして知られています)で実行されるインタラクティブマップ(ArcGIS API for WPFを使用)を使用してアプリケーションを構築しています。私のアプリケーションには、ユーザーがドラッグしてマップ上の特定の場所に配置できる要素を含むlibrarycontainerがあります。これを実現するには、次のように、マップ上の要素レイヤーにスキャッタービュー(マップ全体をエンベロープする)を配置します。

<esri:ElementLayer>
    <esri:ElementLayer.Children>
        <local:DragDropScatterView esri:ElementLayer.Envelope="-19949487.9573175,-20100080.1372686,20125528.7282505,20131479.5822274" x:Name="ScatterLayer" Background="Transparent" Height="Auto"  Width="Auto" ItemContainerStyle="{StaticResource ScatterItemStyle}" />
    </esri:ElementLayer.Children>
</esri:ElementLayer>

この問題は、ユーザーがマップをズームインまたはズームアウトしたときに発生し、スキャッタービューに配置された要素の位置が完全に変更されます。

この問題を修正するために、スキャッタービューをビューボックス内に配置してみました。これを行うと、要素はマップ内の正しい位置を維持しますが、新しい問題が発生します。マップをズームインおよびズームアウトすると、要素が上下に拡大します(たとえば、マップが完全に表示されている場合、要素ははほとんど見えません)、推奨される動作は、ユーザーがマップをズームインまたはズームアウトしたときに要素のサイズを維持することです(たとえば、Googleマップのマーカーのように)。

この問題をどのように解決できるかについて誰かが提案を持っていますか?

乾杯

4

1 に答える 1

1

ScatterView を Viewbox に配置する代わりに、次のことを行う必要があります。

  • ScatterViewItem をマップに配置した後、その中心点 (ビューポート座標にある) を世界座標 (緯度と経度) の位置に変換します。ArcGIS API は、このような変換を提供する必要があります。

  • マップがズームされているか、別の方法で変換されている場合は、各世界の場所をビューポート座標に戻し、それに応じて各 ScatterViewItem の Center プロパティを設定します。

各 ScatterViewItem のワールド座標を格納するために、添付プロパティを作成できます。

于 2013-01-07T10:40:29.990 に答える