asw*_*esh 4 gps geocoding geolocation convex-polygon
如何获得随机地理点[lat/long in decimal],放置在100米半径范围内的任何位置?圆的中心是另一个参考GeoPoint.有没有实现这个的函数/公式?
基本上我正在阅读我的Android设备的GPS输入,需要在设备周围生成随机的地理点[在我的设备中心的半径100米的圆圈].
请注意:数据库中没有预先存储的地理点.如上所述,我需要动态创建所有地理点.
我刚刚写了一个Ruby方法,它扩展Random为提供这个.
警告:所有点都在一个盒子里,而不是一个圆圈.
class Random
def location(lat, lng, max_dist_meters)
Run Code Online (Sandbox Code Playgroud)
这称为Random.new.location(mid_lat, mid_lng, dist).它将返回一个可能位于中点之内max_dist_meters的点.
max_radius = Math.sqrt((max_dist_meters ** 2) / 2.0)
Run Code Online (Sandbox Code Playgroud)
如果不进行调整,max_radius我们就会在圆圈外的正方形内(即在角落处)获得点,距离将大于max_dist_meters.这会将我们限制在圆圈内的正方形,这可能更符合您的要求.
lat_offset = rand(10 ** (Math.log10(max_radius / 1.11)-5))
lng_offset = rand(10 ** (Math.log10(max_radius / 1.11)-5))
Run Code Online (Sandbox Code Playgroud)
在1.11与5前来这里.
lat += [1,-1].sample * lat_offset
lng += [1,-1].sample * lng_offset
lat = [[-90, lat].max, 90].min
lng = [[-180, lng].max, 180].min
Run Code Online (Sandbox Code Playgroud)
我们应该在这里环绕而不是仅仅限制价值,修复欢迎.
[lat, lng]
end
end
Run Code Online (Sandbox Code Playgroud)
评论/收拾欢迎!
这里的示例输出,如果您在此处粘贴lat/lng,您可以很好地看到它.
| 归档时间: |
|
| 查看次数: |
4866 次 |
| 最近记录: |