请教:如何用已知的经纬度坐标在地图给定半径画圆。

2018-11-27 16:58:35 +08:00
 wylwang
最近项目上需要在地图上根据商圈经纬度坐标画圆,用来确定两个坐标范围是否有重合,然后再将该圆形区域标记成等面积的 n 块。
然后遍历数据库里的坐标,判断坐标属于哪个商圈区块。
现在卡在了,不知道如何利用经纬度在地图上画圆,请教各位大佬,有什么方法能够实现!
谢谢
4055 次点击
所在节点    Python
10 条回复
liuzhedash
2018-11-27 17:19:15 +08:00
画圆的目的是判断两个坐标是否重合?还是要在地图上画一个圆形出来?
feverzsj
2018-11-27 17:23:14 +08:00
圆上的点到圆心距离是相同的,你每隔一个角度计算出另一端的坐标就可以了,一般用等角线算法,距离很长的话可以用大圆算法
AifeiI
2018-11-27 17:25:17 +08:00
图层覆盖物,圆形的直径 /半径预先计算好,然后描绘的时候,将圆形对准坐标点。
AifeiI
2018-11-27 17:27:02 +08:00
@AifeiI 画圆就简单了吧,前段用样式或者画布都可以,app 也类似
across
2018-11-27 17:35:26 +08:00
我做过一个类似 LBS,不过要求不太严格,经纬度要先转化成米的空间尺度计算。经纬度公式、转化代码网上能查到很多。
画圈嘛,很简单,比如取 60 个采样点的平滑程度,把 360 度 60 等分,有了圆心半径,就知道采样点位置了,每个点连线不就好了。
across
2018-11-27 17:37:09 +08:00
“经纬度要先转化成米的空间尺度计算”
补充下这个,就是取个位置点作为空间原点,然后计算其他位置在该相对坐标系下的数值。
wylwang
2018-11-27 17:38:51 +08:00
@liuzhedash 在地图上画出圆形
kzfile
2018-11-27 17:40:27 +08:00
最简单的方法:
把商铺的经纬度位置放入 redis,存为 geohash,
然后 redis 的 api 可以根据给定的坐标和半径返回范围内的全部商铺.
这其实就是根据 geohash 的特性做文章.
复杂点的就是 postgres+postgis 做空间数据库,直接进行空间查询.
kzfile
2018-11-27 17:47:35 +08:00
你的需求是在地图上画图?用的什么地图控件?
wylwang
2018-12-06 15:47:01 +08:00
@kzfile
@across
@feverzsj
感谢各位,目前这个问题已经通过另外一种方法解决了,曲线救国了.

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

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

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

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

© 2021 V2EX