一个让人头大的需求,各位老哥帮忙看看怎么实现

2019-12-02 13:43:51 +08:00
 jiangwei2222

一个热门地点打卡需求,产品希望打卡一个地点后,将这个地点所属的正六边形区域点亮。也就是说我需要将整个地球分割成 N 个正六边形,然后根据经纬度确定点亮哪个六边形。But ! 他妈的地图是墨卡托投影啊,经纬度做成的坐标系跟数学里面的直角坐标系不一样啊。这他丫的该怎么分?

效果图是这样(每个六边形得完全挨着,不能重叠,不能有缝隙):

目前试了 h3 算法,但是分出来不是正六边形

6482 次点击
所在节点   地理信息系统
5 条回复
huayumo
2019-12-02 22:06:54 +08:00
试试阿里开源的 g2,没做不,不是很懂,随便说一下
jiangwei2222
2019-12-03 18:21:27 +08:00
@huayumo #1 感谢
jiangwei2222
2019-12-03 18:21:57 +08:00
自己解决了,解决思路是

1.先将经纬度坐标系转换成平面直角坐标系
jiangwei2222
2019-12-03 18:23:33 +08:00
@jiangwei2222 #3 按快了,发出去了

接上面

2.在平面直角坐标系中使用平面几何的方法计算出各个点的坐标

3.将平面直角坐标系中的点转换成经纬度点

附坐标系转换方法:

https://wiki.openstreetmap.org/wiki/Mercator
flowerwrong
2020-10-28 18:26:48 +08:00
@jiangwei2222 地球是一个球体,不能完整分割吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/625055

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX