12

私は WPF で単純なマップ コントロールを作成することを考えており、基本的なマップ インターフェイスの設計について考えています。

私が考えているのは、ScrollViewer(スクロールバーなし)を「ビューポート」として使用し、すべてをキャンバスの上に積み重ねることです。Z-Index=0 アップから、私は考えています:

  1. 緯度/経度の計算、コントロールの配置、Z-Index スタッキングのためのベース キャンバス。
  2. さまざまなズーム レベルでマップを表す複数の Grid 要素。グリッドを使用してタイリングを簡単にします。
  3. 位置データを使用してオブジェクトをマップします。
  4. マップ コントロール (ズーム スライダー、概要など)。
  5. パンとズームのためのマウス移動イベントでビューアーをスクロールします。

これをどのように構築すべきかについてのコメントの提案はありますか?

4

10 に答える 10

9

良いスタートを探している場合は、SharpMapプロジェクトによって提供されるコードの基盤を使用して、そこから構築することができます。SharpMap の WPF レンダラーにすでに取り組んでいる人が何人かいたことを思い出すと、最初にいくつかのコードがあるかもしれません。

私は個人的に、GIS データとリアルタイム GPS データを組み合わせた C# 2.0 アプリケーションで SharpMap を使用しましたが、非常にうまくいきました。SharpMap は、GIS データを処理するための変換スイートと、GIS 情報を変更するための数学的基盤を提供してくれました。非レンダリング コードを WPF フロントエンドで使用するのは、データから分離されたプレゼンテーションが既にあるため、比較的簡単です。

(編集:SharpMapの使用方法に関する詳細を追加)

于 2008-09-17T22:11:53.087 に答える
5

これはおそらく迂遠な方法ですが、Silverlight 1.0 ベースのマップ タイル クライアントである SilverlightEarth.comjavascript と XAML で便利なものが見つかるかもしれません。VE、Google、Yahoo を読み込むことができます ( OpenStreetMap、Moon、Mars も読み込むことができるDeepZoom バージョンがありますが、MSI を使用するため、WPF 3/3.5 フロントではあまり役に立ちません)。

JavaScript は少し乱雑ですが、Silverlight 1.0 Xaml (動的サイズ) キャンバスを作成し、タイル (画像コントロール) で塗りつぶし、ズームイン/アウトとパン要求を処理していることは明らかです。すべての JavaScript を理解して C# に変換する必要があります。XAML はほとんど変更されずに WPF に取り込まれます。この Silverlight 1.0 をディープ ズーム タイル ピラミッド(およびこちら)でテストしたので、概念は適用可能です (つまり、マップだけではありません)。

私は、 WPF/c# であるGeoquery2008.com (スクリーンショット) でマップ ビューアーを自分で作成したので、これが機能することを知っています。残念ながら、Geoquery2008 アセンブリは難読化されていますが、DASM/Reflector を介していくつかのアイデアや有用なコードを収集することができます。まだベータ版なので、100% 完成したとは言えません。マップ コードを別のコントロールに分解することはあまり考えていませんでしたが、別のコントロールが表示されない場合は検討します...

ちなみに、私も ScrollViewer から始めましたが、それを捨てて JavaScript をより厳密に模倣することを計画しているので、パン/ズーム時に Image オブジェクトを再利用しやすくなります (ScrollViewer が提供するよりもプロセスをより詳細に制御することにより)。

Virtual Earth タイル システムに関する MSDN ページ、Deep Zoom ファイル形式、および関連リンクも参考になるでしょう。

最後に、この記事以降、DeepZoom/MultiScaleImage が.NET 4.0/Studio 2010にある可能性が高いことをご覧になったと思います。

于 2008-12-02T00:53:20.537 に答える
1

WPFマッピングツールを作成したいというあなたの願望は私のものと似ています。そのため、SilverlightのDeepZoom(別名MultiScaleImage)についてこの質問をすることになりました。WPFバージョンが欲しいです。受け入れられた答えは、非常に良い出発点へのリンクを提供します(あなたが説明した思考プロセスと同様です)。

于 2008-09-17T22:02:18.540 に答える
1

Virtual Earth はWPFに有利な点があります

于 2008-09-17T23:14:02.940 に答える
1

私の仕事の分野にはまったく当てはまりませんが、多くのマッピングおよび GIS 機能を提供するオープン ソースの ActiveX オブジェクトを含む MapWindow GISを見たことがあるかもしれません。これは、WPF アプリケーションに埋め込む方法を説明する投稿です。

http://www.mapwindow.org/phorum/read.php?13,13484

于 2010-01-30T13:35:39.710 に答える
1

ESRI ソフトウェアを使用しているかどうかはわかりませんが、スタック用の Silverlight API を開発していると聞いているので、保留した方がよいかもしれません。

于 2008-12-04T17:02:43.247 に答える
0

Bing Maps Windows Presentation Foundation Control v1は、WPFで最適なマップコントロールです。

タイルレイヤーのサポート–マップコントロールの上に独自のタイルレイヤーをオーバーレイできるようになりました。
ベースタイルレイヤーをオフにする–これは、ベースマップタイルを使用する必要がない/使用したくない場合に便利です。代わりに、ベースマップタイルをオーバーレイせずに独自のタイルを使用したい場合に便利です。コントロールはタイルを要求しないため、タイルが減少します。ダウンロードしてレンダリングパフォーマンスを向上させます。
SSLサポート–多くのユーザーが安全なアプリケーションでWPFコントロールを使用しているため、SSLを介して問題なくタイルとサービスの要求を行うことができます。
スケールバーを非表示にする–スケールバーが必要ない場合(おそらくマップが小さく、スケールバーがマップを乱雑にしている場合)、オフにすることができます。実際、オフにできない要素は、Bingのロゴと著作権だけです。
新しい著作権サービス–データベンダーに正確な著作権を提供します。追加の慣性–慣性はマウスで有効になり、タッチではデフォルトでオンになっています。
その他のバグ修正– MSDNフォーラム、Bing Mapsブログ、電子メール、およびTwitterへのフィードバックに感謝します。良い人を見つけます。

于 2012-03-13T06:30:55.783 に答える
0

主な質問は、マップに配置するアイテムをどのように保存してアクセスするかです(これが単なる画像表示ではないと仮定します)。いくつかのアイデアのシーングラフを検索します。

また、おもちゃの画像ビューア以上のものにしたい場合は、緯度からXYまでのスケーリングが「興味深い」ものになる可能性があります。

于 2008-09-17T19:51:09.260 に答える
0

自分でビルドしないでください - WPF Bing Maps コントロール http://www.bing.com/community/site_blogs/b/maps/archive/2012/01/12/announce-the-bing-maps-windows-presentationを使用してください-foundation-control-v1.aspx

于 2012-01-13T14:24:10.887 に答える