客户提出的需求:比如地图上有2个图形,图形任意,需要判断出图形的交点区域的图形。
这样做会遇到很多的难点:目前我们地图上提供可供客户绘制的图形有:
1.箭头(这个暂时不需要判断)
2.椭圆
3.曲线(这两个还没有实现判断的逻辑,但是原理其实是一样的)
4.矩形
5.多边形
6.圆
7.折线
这样的判断其实有一定的难度性,需要判断客户点击的图形是怎样的,根据不同的图形来判断。而且判断出来的公共区域可能是一个集合,也就是说可能有多个点。
下面是我实现的效果图:实现的简单过程是根据客户点击的图形传入到后台进行判断。地图上的判断会有一定的坑,比如绘制的圆形传参到后台的话需要进行坐标系的转换等,因为当前的地图是使用84坐标系,比如两圆包含的时候,需要返回一个圆形,但是返回的参数在地图上显示的时候竟然变成了椭圆形等等。最终的解决方案还是翻去国外找到的答案,凭借我的蹩脚猫级别的英语成功找到了答案,美滋滋。
实现的效果图如下:
1、圆和折线段相交:
2.圆和圆相交:有外接和包含
3.圆和矩形相交
4.圆和多边形相交效果图
5.矩形和多边形相交
6.矩形和矩形,矩形和线段,多边形和线段等等除开椭圆和曲线(这两个没时间实现了,其实只要在后台绘制出相关的参数便可以实现了)
效果图如上,但是经过我的测试,在地图上如果绘制的图形范围较大的话,图形的交点是会有一定的误差,大概在200米左右 。我估计可能是计算四舍五入坐标系的结果,和之前的交点的坐标有大概0.0001的差距