一个热门地点打卡需求,产品希望打卡一个地点后,将这个地点所属的正六边形区域点亮。也就是说我需要将整个地球分割成 N 个正六边形,然后根据经纬度确定点亮哪个六边形。But ! 他妈的地图是墨卡托投影啊,经纬度做成的坐标系跟数学里面的直角坐标系不一样啊。这他丫的该怎么分?
效果图是这样(每个六边形得完全挨着,不能重叠,不能有缝隙):
目前试了 h3 算法,但是分出来不是正六边形
1
huayumo 2019-12-02 22:06:54 +08:00
试试阿里开源的 g2,没做不,不是很懂,随便说一下
|
2
jiangwei2222 OP @huayumo #1 感谢
|
3
jiangwei2222 OP 自己解决了,解决思路是
1.先将经纬度坐标系转换成平面直角坐标系 |
4
jiangwei2222 OP @jiangwei2222 #3 按快了,发出去了
接上面 2.在平面直角坐标系中使用平面几何的方法计算出各个点的坐标 3.将平面直角坐标系中的点转换成经纬度点 附坐标系转换方法: https://wiki.openstreetmap.org/wiki/Mercator |
5
flowerwrong 2020-10-28 18:26:48 +08:00
@jiangwei2222 地球是一个球体,不能完整分割吧。
|