【问题标题】:How to calculate google maps max and min Lat And Long如何计算谷歌地图的最大和最小纬度和经度
【发布时间】:2016-11-30 11:35:21
【问题描述】:

我使用 Google Maps JavaScript API 开发网络应用程序。

我有这个问题:

当用户打开应用程序时,它会生成带有一些自定义标记的地图。 标记以纬度和经度存储在数据库 ( SQL ) 中。 我有用户位置和半径,可以说是 10 公里。

我只需要从数据库中获取距离用户 10 公里(半径)的标记。

所以在我的 where 子句中,我需要特定的 lang 值。并且很长。边框。

是否有一些 Google API 函数或其他方法来计算。

例子:

我有这个 SQL 结构: 表格标记

CODE                int         
LOCATION_LATITUDE   float           
LOCATION_LONGITUDE  float   

现在在 JS 中,我使用 center = user location 生成地图。

现在我只想添加地图中心半径 10 公里内的表标记中的标记(用户位置) 在表标记中,我有来自世界各地的标记。

【问题讨论】:

  • @geocodezip 我看到了这些问题,但这与我的...无关? map.getBounds(); -> 返回当前视口的西南纬度/经度和东北纬度/经度:这很好,但我不需要这个。我需要一种方法从给定的点和半径计算 Lang 和 Long 的 4 个值放入我的 where 子句中,这样我只能选择范围内的那些 ...
  • 请提供更多详细信息以及真实示例和数据库表结构。
  • 您想要一个围绕点的半径还是一个矩形边界?这两个查询会有所不同。

标签: javascript google-maps-api-3


【解决方案1】:

好的。我找到了解决方案。 -> 正弦公式

假设坐标 ( 37, -122 ) 的点是地图的中心。 因此,where 语句将是

SELECT code FROM MARKERS WHERE ( 6371 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) < 10

其中 6371 是以千米为单位的地球半径(3959 以英里为单位),10 是搜索区域的半径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-10
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多