美文网首页
Android 上绘制中国省份地图

Android 上绘制中国省份地图

作者: 程树欣 | 来源:发表于2016-08-04 13:01 被阅读504次

    去年苏州街一家公司面试,当时他们正在做一个关于国内省份的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,欢迎吐槽

    相关文章

      网友评论

          本文标题:Android 上绘制中国省份地图

          本文链接:https://www.haomeiwen.com/subject/rsmcsttx.html