1

バックグラウンド:

私はSilverlight/WindowsPhoneを初めて使用します。

Nokiaマップ(Windows Phone 8バージョン)のようなものを作成したいと思います。Nokiaマップでは、[検索]をクリックして検索結果を取得すると、ページが2つの部分に分割され、上の方がマップ、下の方が結果になり、指のジェスチャーを使用してマップと結果の間をスクロールできます。 。

私の最初の解決策は、2行のグリッドを作成し、(スプライン移動でDoubleAnimationを使用して)グリッド行の高さを動的に変更することでした。たとえば、地図が表示されている場合は下の行の高さが縮小され、下の行が表示されている場合は地図の高さが縮小されます。

しかし、私はすぐに、これがノキアの地図を実現する方法ではないかもしれないことに気づきました。たとえば、一番上の行に地図を作成し、一番上の行の高さを縮小しても、地図の位置はまだ中央付近にあります(移動しますが、行が縮小されるよりも速度が遅くなります)。マップ自体は、Nokiaマップのように「上向きにロールアップ」されていません。さらに、マップ上にポップアップがある場合(Nokiaマップの現在の場所ボタンなど)、ポップアップもロールアップされません。

まあ、理論的には、上記はマップを強制することで解決でき、グリッド行の高さの変更中にポップアップも上にロールアップします。しかし、いくつかの比較と観察の結果、ノキアの地図の上下の動きは、垂直方向のキャンバスが大きいパノラマのようであり、キャンバスの上部または下部を表示するだけでよいと思います。

これにより、垂直パノラマのようなものを実装する方法に興味があります。

私の質問、

  1. あなたの意見では、おそらくノキアの地図はどのように実装されていますか?他にもっと簡単な方法はありますか?
  2. 既存のパノラマコントロールを垂直パノラマにカスタマイズすることは可能ですか?
  3. 自分で実装する必要がある場合、どのように実装しますか?私の現在の考えは、大きな帆布を作り、すべてを自分で描くことですか?低レベルになりすぎませんか?垂直方向の動作でパノラマを再実装する良い方法はありますか?

どうもありがとうございます。

4

2 に答える 2

1

少し遊んでみましたが、縦長のパノラマよりも少しシンプルだと思います。

マップのサイズを変更するのではなく、単に画面から移動するだけであるという主張は正しいです。

これが私の考えです。

  1. 私の考えでは、2行のグリッドがあり、どちらも最小の高さは約100px程度です(実際の値は確認されていません)。このバッファは、一方を上下にスライドさせたときにもう一方の「画面」を表示できるようにするためのものです。検索が実行されると、下部の画面が表示されます。次に、グリッドの全体的な上部マージンを調整して上下にスライドさせるタップアンドドラッグ処理コードがあります。これは、指の位置の変化に基づいて行われます。
  2. いいえ、手動で作成する必要があるとは思いません。
  3. 回答1の私の考えを参照してください。

これが理にかなっていることを願っています。トリッキーなものですが、これは正しい方向に進んでいるように感じます。

于 2013-02-25T03:49:25.997 に答える
1

私の提案は、オプション3を試すことです。ページのサイズのキャンバスを1つ持つことができます。マップコントロールと結果コントロールを垂直に配置します。次に、ジェスチャを処理し、各コントロールのCanvas.Topプロパティを調整して上下に移動する必要があります。

言うのは簡単ですが、私が知っているのは...でも、もしそれが私なら、そのアプローチを試してみます。

于 2013-04-16T10:02:38.473 に答える