背景
这个方案背景其实就是上篇中那次快速响应的一个额外需求,客户需要一个面来表示一个特定的区域,但客户只能提供一个点,且要求生成的图形不能是很规则的圆,长方形或者正方形
需求分析:已知一个点center,一个半径R。我们首先能想到的就是一个圆。以当前圆的圆心为基点我们可以将该圆切割成4个象限。那么是否我们可以使用随机的角度去去这个四个象限内的随机坐标呢?
初次实验,结果是成立的满足可以四边形需求。但仍不满足我们多边不含(四边)的需求。如果想做我们需要一个合理的算法支撑。时间是不允许我这样考虑的
换个思路:外部支撑吧!首先想到的就是Turf.js
作为一个空间分析处理的库,理论上它是满足的。
果然发现了一个类circle
有了转译的算法工具那么剩下的就是数据处理了
1.获取数据源
/**
* @Description: 获取数据
* @Author: ShiWei
* @Date: 2020-09-14
*/
getQsCenter(){
let code=[]
qs.data.map((item)=>{
code.push([item.longitude,item.latitude])
})
this.getMorePoint(code)
},
2.处理脏数据(数据中会有重复的点位)
/**
* @Description: 去除数据中重复点位信息
* @Author: ShiWei
* @Date: 2020-09-14
*/
getMorePoint(code){
for(var i=0; i<code.length; i++){
for(var j=i+1; j<code.length; j++){
if(code[i][0]===code[j][