我想创建一个显示国家地图的活动。我想让每个区域都可以点击。
我首先尝试使用 SVG 数据/javascript(请参见此处)绘制地图并将其放入 WebView。但是,矢量库不适用于大多数 android 设备。
最好的解决方案似乎是将区域的图像(位图格式)堆积起来并使其可点击,但我不知道该怎么做。
很抱歉我的解释很粗鲁
谢谢 !
我想创建一个显示国家地图的活动。我想让每个区域都可以点击。
我首先尝试使用 SVG 数据/javascript(请参见此处)绘制地图并将其放入 WebView。但是,矢量库不适用于大多数 android 设备。
最好的解决方案似乎是将区域的图像(位图格式)堆积起来并使其可点击,但我不知道该怎么做。
很抱歉我的解释很粗鲁
谢谢 !
使您的地图成为 SurfaceView 的子类以绘制地图并覆盖 onTouchEvent() 过滤以获取单击的 (x,y) 坐标。
您可以将透明网格重叠到地图上。网格由“触敏”图块组成。瓷砖尺寸必须足够小以填满地图的每个区域。每个区域将包含一定数量的瓷砖。您需要将每组瓦片关联到包含区域。然后,每次点击图块时,您都可以关联正确的区域。
编辑:平铺定义示例
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.:我的回答中描述的实现只是可能的实现之一。您可以根据需要创建自己的实现。