1

我想创建一个显示国家地图的活动。我想让每个区域都可以点击。

在此处输入图像描述

我首先尝试使用 SVG 数据/javascript(请参见此处)绘制地图并将其放入 WebView。但是,矢量库不适用于大多数 android 设备。

最好的解决方案似乎是将区域的图像(位图格式)堆积起来并使其可点击,但我不知道该怎么做。

很抱歉我的解释很粗鲁

谢谢 !

4

2 回答 2

1

使您的地图成为 SurfaceView 的子类以绘制地图并覆盖 onTouchEvent() 过滤以获取单击的 (x,y) 坐标。

于 2012-11-06T07:20:32.943 回答
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.:我的回答中描述的实现只是可能的实现之一。您可以根据需要创建自己的实现。

于 2012-11-06T07:27:45.170 回答