最近有个需求就是做用百度地图API,做范围内可达性路径分析,也可以叫做交通时空圈,于是我需要在地图上的指定范围内生成均匀分布的点,百度了一会无果于是自己随便写了一个,其实也非常简单,自己记录下
首先上效果图
然后直接上后端代码
public static void main(String[] args) {
//中心点的经度 纬度 半径经度浮动值 半径纬度浮动值 ,
double jd =112.988054; double wd=28.193687; double jdfd=0.002956; double wdfd=0.002253;
//先生成一个最左上角的点位
double leftjd=jd-jdfd;
double leftwd=wd+wdfd;
//经度坐标集合
List<String> jdbuffer =new ArrayList<>();
//先添加左上角第一个点
jdbuffer.add(leftjd+"");
//纬度坐标集合
List<String> wdbuffer =new ArrayList<>();
wdbuffer.add(leftwd+"");
//在浮动范围内生成,横向和纵向的等距离的10个点
for (int i = 0; i < 11; i++) {
leftjd+=((jd+jdfd)-(jd-jdfd))/10;
leftwd-=((wd+wdfd)-(wd-wdfd))/10;
jdbuffer.add(leftjd+"");
wdbuffer.add(leftwd+"");
}
//然后拼接成指定想要的格式返回到前端
StringBuffer stringBuffer =new StringBuffer("[[");
for (int i = 0; i < 11; i++) {
StringBuffer buffer0=new StringBuffer();
for (int j = 0; j < 11; j++) {
if(i==10 && j==10){
buffer0.append(jdbuffer.get(j)).append(",").append(wdbuffer.get(i)).append("]");
}else{
buffer0.append(jdbuffer.get(j)).append(",").append(wdbuffer.get(i)).append("],[");
}
}
stringBuffer.append(buffer0);
}
stringBuffer.append("]");
System.out.println(stringBuffer);
}
//输出后结果格式,直接返回到前端批量生成点位即可
[[112.98509800000001,28.19594],[112.98568920000001,28.19594],[112.98628040000001,28.19594],[112.98687160000001,28.19594],[112.98746280000002,28.19594],[112.98805400000002,28.19594],[112.98864520000002,28.19594],[112.98923640000002,28.19594],[112.98982760000003,28.19594],[112.99041880000003,28.19594],[112.99101000000003,28.19594],[112.98509800000001,28.1954894],[112.98568920000001,28.1954894],[112.98628040000001,28.1954894],[112.98687160000001,28.1954894],[112.98746280000002,28.1954894],[112.98805400000002,28.1954894],[112.98864520000002,28.1954894],[112.98923640000002,28.1954894],[112.98982760000003,28.1954894],[112.99041880000003,28.1954894],[112.99101000000003,28.1954894],[112.98509800000001,28.1950388],[112.98568920000001,28.1950388],[112.98628040000001,28.1950388],[112.98687160000001,28.1950388],[112.98746280000002,28.1950388],[112.98805400000002,28.1950388],[112.98864520000002,28.1950388],[112.98923640000002,28.1950388],[112.98982760000003,28.1950388],[112.99041880000003,28.1950388],[112.99101000000003,28.1950388],[112.98509800000001,28.1945882],[112.98568920000001,28.1945882],[112.98628040000001,28.1945882],[112.98687160000001,28.1945882],[112.98746280000002,28.1945882],[112.98805400000002,28.1945882],[112.98864520000002,28.1945882],[112.98923640000002,28.1945882],[112.98982760000003,28.1945882],[112.99041880000003,28.1945882],[112.99101000000003,28.1945882],[112.98509800000001,28.194137599999998],[112.98568920000001,28.194137599999998],[112.98628040000001,28.194137599999998],[112.98687160000001,28.194137599999998],[112.98746280000002,28.194137599999998],[112.98805400000002,28.194137599999998],[112.98864520000002,28.194137599999998],[112.98923640000002,28.194137599999998],[112.98982760000003,28.194137599999998],[112.99041880000003,28.194137599999998],[112.99101000000003,28.194137599999998],[112.98509800000001,28.193686999999997],[112.98568920000001,28.193686999999997],[112.98628040000001,28.193686999999997],[112.98687160000001,28.193686999999997],[112.98746280000002,28.193686999999997],[112.98805400000002,28.193686999999997],[112.98864520000002,28.193686999999997],[112.98923640000002,28.193686999999997],[112.98982760000003,28.193686999999997],[112.99041880000003,28.193686999999997],[112.99101000000003,28.193686999999997],[112.98509800000001,28.193236399999996],[112.98568920000001,28.193236399999996],[112.98628040000001,28.193236399999996],[112.98687160000001,28.193236399999996],[112.98746280000002,28.193236399999996],[112.98805400000002,28.193236399999996],[112.98864520000002,28.193236399999996],[112.98923640000002,28.193236399999996],[112.98982760000003,28.193236399999996],[112.99041880000003,28.193236399999996],[112.99101000000003,28.193236399999996],[112.98509800000001,28.192785799999996],[112.98568920000001,28.192785799999996],[112.98628040000001,28.192785799999996],[112.98687160000001,28.192785799999996],[112.98746280000002,28.192785799999996],[112.98805400000002,28.192785799999996],[112.98864520000002,28.192785799999996],[112.98923640000002,28.192785799999996],[112.98982760000003,28.192785799999996],[112.99041880000003,28.192785799999996],[112.99101000000003,28.192785799999996],[112.98509800000001,28.192335199999995],[112.98568920000001,28.192335199999995],[112.98628040000001,28.192335199999995],[112.98687160000001,28.192335199999995],[112.98746280000002,28.192335199999995],[112.98805400000002,28.192335199999995],[112.98864520000002,28.192335199999995],[112.98923640000002,28.192335199999995],[112.98982760000003,28.192335199999995],[112.99041880000003,28.192335199999995],[112.99101000000003,28.192335199999995],[112.98509800000001,28.191884599999995],[112.98568920000001,28.191884599999995],[112.98628040000001,28.191884599999995],[112.98687160000001,28.191884599999995],[112.98746280000002,28.191884599999995],[112.98805400000002,28.191884599999995],[112.98864520000002,28.191884599999995],[112.98923640000002,28.191884599999995],[112.98982760000003,28.191884599999995],[112.99041880000003,28.191884599999995],[112.99101000000003,28.191884599999995],[112.98509800000001,28.191433999999994],[112.98568920000001,28.191433999999994],[112.98628040000001,28.191433999999994],[112.98687160000001,28.191433999999994],[112.98746280000002,28.191433999999994],[112.98805400000002,28.191433999999994],[112.98864520000002,28.191433999999994],[112.98923640000002,28.191433999999994],[112.98982760000003,28.191433999999994],[112.99041880000003,28.191433999999994],[112.99101000000003,28.191433999999994]]
大概意思就是现在最左上角生成第一个点,然后等距离依次横向,纵向递增生成对应点位的经纬度即可,非常简单
前端代码
//第一组数据
let ManyMarker0=[[112.98509800000001,28.19594],[112.98568920000001,28.19594],[112.98628040000001,28.19594],[112.98687160000001,28.19594],[112.98746280000002,28.19594],[112.98805400000002,28.19594],[112.98864520000002,28.19594],[112.98923640000002,28.19594],[112.98982760000003,28.19594],[112.99041880000003,28.19594],[112.99101000000003,28.19594]];
ManyMarker0.forEach(function (x,y,z){
map.addOverlay(new BMap.Marker(new BMap.Point(x[0],x[1])));
})
直接把后台数据拿过来 然后批量生成对应的点位即刻。