我使用Google Maps JavaScript API处理网络应用程序。
我有这个问题:
当用户打开应用程序时,它会生成带有一些自定义标记的地图。 标记存储在具有纬度和经度的数据库(SQL)中。 我有用户位置,半径可以说10km。
我需要从数据库中仅获取用户10km(半径)的标记。
所以在我的where子句中我需要lang的特定值。而且很长。边界。
是否有一些Google API函数或其他方法来计算它。
示例:
我有这个SQL结构: 表标记
CODE int
LOCATION_LATITUDE float
LOCATION_LONGITUDE float
现在在JS中我使用center = user location
生成地图。
现在我想只添加地图中心10公里范围内的表标记中的标记(用户位置) 在表Markers中,我有来自世界各地的标记。
答案 0 :(得分:1)
确定。我找到了解决方案。 - > Haversine公式
让我们说坐标(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是搜索区域的半径。