android:绘制一个可点击的地图

时间:2012-11-06 06:57:34

标签: android android-layout onclicklistener ondraw

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

enter image description here

我首先尝试使用SVG数据/ javascript(see here)绘制地图并将其放在WebView中。但是,Vector Library不适用于大多数Android设备。

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

很抱歉我的解释很粗糙

谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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。:我的回答中描述的实现只是可能的实现之一。您可以根据需要创建自己的实现。