Android 上绘制中国省份地图

去年苏州街一家公司面试,当时他们正在做一个关于国内省份的APP,因此被问到了一个问题

怎么将各省的轮廓绘制到APP上,而且可以控制不同的状态?

我接到问题后不假思索得就说用Path,然后绘制到自定义的View上,多状态的话控制不同的Paint进行绘制就好了。

然后我们就这个问题讨论了20分钟,最后考官把他们的方案告诉了我,用DreamRiver 画热区放到WebView上来显示。

其实在WebView上显示的话SVG其实是最合适的,可以矢量放大,还能控制各种颜色,不过不知道兼容性如何。

时间过去快一年了,这两天想起了这件事,因此将当时的思路用代码实现了一下

地图演示

其实画这个比较麻烦的就是找地图的数据,还好中国地广物博,历史悠久,我找到了一个SVG的中国地图,接下来处理如下三步就行了

1.将SVG <path>转成Android中的Path(详见上篇文章)

2.将Path绘制到Canvas上,这个没有难度

3.处理触摸点击等事件,确定点击在封闭的Path内

只要是个封闭的Path,在Android上还是很好弄得,看下面这个例子

 int x = 150;
 int y = 120;
 
 Path path = new Path();
 path.moveTo(100,100);
 path.lineTo(300,100);
 path.lineTo(300,300);
 path.close();
 
 RectF r = new RectF();
 path.computeBounds(r, true);
 Region re = new Region();
 re.setPath(path, 
        new Region((int) r.left, (int) r.top, (int) r.right, (int) r.bottom));
 boolean isInPath = re.contains(x,y);

这个Demo 已分享到GitHub,欢迎吐槽

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容