2011-01-27 18 views
1

キャンバスに多数の六角形をレンダリングする必要があります。私は、ユーザーが見ることができるタイルだけをレンダリングし、ユーザーが(ドラッグまたは矢印キーまたはパンコントロールを使用して)スクロールすると、追加のhextileをロードするようにしたいと考えています。私は私の頭の中で基本的なアイデアを持っていますが、私は、より堅牢なソリューションを考案する上で助けを求めています。六角形のパンコントロール

私が気にかけて今できることは次のとおりです。

a。画面にロードする必要があるタイルを特定し、サーバーからレンダリングするためのデータを取得します。 b。ユーザーがドラッグすると、ロードする必要のあるタイルの新しいセットを把握し、データを取得して画面全体を再度ロードします。

これは機能しますが、スクロール感はありません。本質的に突然、すべてが再配置されます。理想的には、私はこれをスクロールするときにGoogleマップの感覚を得たいと思います。私は地図の横にいくつかのタイルをロードして遊んでいましたが、ドラッグするときに下にあるキャンバスをスクロールするだけでしたが、キャンバスがなくなってしまったためにうまくいきません...キャンバスがあれば本当にきれいです循環バッファーのように振る舞い、あらゆる方向にスクロールすれば、メモリ内に一定数のタイルしか保持されず、すべての方向に連続的にスクロールすることができます。

ご意見やご鞭撻を賜りますようお願い申し上げます。

ありがとうございます!

答えて

0

Google Maps Flash APIをこの点の出発点として使用することをおすすめします。 CustomTileLayerを作成することができます。単一の大きなソースイメージがある場合は、画像ピラミッドメーカーを検索してさまざまなズームレベルのサンプルに画像をスライスします(通常、ズームレベルを使用するフォルダ構造を作成すると思いますフォルダ名として使用し、画像の解像度とズームレベルに応じて各フォルダにx、yタイルを配置します)。どのような方法でもズーミングが必要でない場合は、単一のズームレベルしか持たず、マップコントロール内のズームコントロールを無効にする必要があります。あなたがこれを避ける理由があるか、それが良い解決策ではないと信じている理由があるかどうかを教えてください(おそらく、その存在を認識していないかもしれませんが、Googleマップの振る舞い、基準)。私に掘り下げて喜んで助けてあげたいと思ったら、私はCustomTileLayerを自分で実装したことはありませんが、Google Maps Flash APIの経験は少しあります。あなたは右のswcを使用します。一方はFlashのみ、もう片方のFlexは両方を含みません)。

幸運、 ショーン

http://nl-samples.googlecode.com/svn/trunk/flexmap/9a/bin-release/CustomProjection.html

+0

こんにちはショーン、その詳細なコメントをありがとうございました。私はGoogla Maps APIを探していましたが、私の場合はそれが当てはまるかどうかはわかりませんでした。私はそれ自身で存在する六角形のタイルのリストを持っており、それらの数に制限はありません。さらに、各六角形のタイルは今すぐ別々にレンダリングされます。 gooleマップのフラッシュAPIを使用するには、すべての六角形タイルを並べて1つの大きな画像を作成するだけで済むと思います。各六角形タイルは、の)。これを念頭に置いて追加したコメントも参考になります。 – Azeem

+0

こんにちはAzeem、問題ありません、ご迷惑をかけても問題は解決しません。キャンバスが「使い果たされた」と言うと、グラフィックスの上限が4800x4800を超えてしまうということですか?私はおそらく、あなたは個々のスプライト(あなたが言うようにリサイクル)として六角形のタイルを保持し、マウスイベントをピックアップするためにキャンバスを使用し、スプライトを個別に移動し、必要に応じてロードしてシフトすることができると思います。基本的には、スクロールする必要があるかどうか/プリロードする必要があるかどうかによって、読み込んだ「近い」タイルの量で再生する必要があるかもしれないと思っていますが、一般的なコンセプトは良いと思います。今日は時間があれば実験します。 – shaunhusain

関連する問題