1

カントリーマップを表示するアクティビティを作成したいと思います。すべてのリージョンをクリック可能にしたい。

ここに画像の説明を入力してください

私は最初にSVGデータ/javascript(ここを参照)を使用してマップを描画し、それをWebViewに配置しようとしました。ただし、ほとんどのAndroidデバイスではVectorLibraryを使用できません。

最善の解決策は、領域の画像(ビットマップ形式)を積み上げてクリック可能にするようですが、その方法がわかりません。

私の説明で大雑把に申し訳ありません

ありがとうございました !

4

2 に答える 2

1

マップに透明なグリッドを重ねて行うことができます。グリッドは「タッチセンシティブ」タイルで構成されています。タイルの寸法は、マップのすべての領域を埋めるのに十分小さい必要があります。すべてのリージョンには、特定の数のタイルが含まれます。タイルのすべてのグループを包含領域に関連付ける必要があります。次に、タイルをタップするたびに、正しい領域を関連付けることができます。

編集:タイル定義の例

public class MapView extends ViewGroup {

    // Tile definition
    //
    static enum Tile {

      T_00 (30, Region.region_a), T_01 (31, Region.region_a)
    , ...
    , T_328 (288, Region.region_h);

        private final int id;
        private final Rg region;

        Tile ( int id, Rg region ) {
            this.id = id;
            this.region = region;
        }

        public int getId() { return id; }
        public Rg  getRg() { return region; }

    }


// Implementation of MapView Class
...

ps .:私の回答で説明されている実装は、可能な実装の1つにすぎません。必要に応じて、独自の実装を作成できます。

于 2012-11-06T07:27:45.170 に答える
1

マップをSurfaceViewのサブクラスにして、マップを描画し、クリックの(x、y)座標のonTouchEvent()フィルタリングをオーバーライドします。

于 2012-11-06T07:20:32.943 に答える