2016-07-26 189 views
0

我使用Google Maps JavaScript API处理Web应用程序。如何计算谷歌地图的最大和最小经纬度

,我有这样的问题:

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

我需要从数据库中仅获取距用户10km(半径)的标记。

所以在我的where子句中,我需要lang的具体值。和长。边界。

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

的例子:

我有这样的SQL结构: 表标记

CODE    int   
LOCATION_LATITUDE float   
LOCATION_LONGITUDE float 

现在JS我生成地图center = user location

现在我只想添加表格中的标记位于地图中心(用户位置)10公里范围内的标记 表格标记我拥有来自全球各地的标记。

+2

可能重复的[Google maps api locate corner coordinates](http://stackoverflow.com/questions/38534643/google-maps-api-locate-corner-coordinates) – geocodezip

+2

可能的重复[如何获取边界框坐标为我的谷歌地图窗口](http://stackoverflow.com/questions/15652867/how-to-get-bounding-box-coordinates-for-my-google-map-window) – geocodezip

+0

@geocodezip我看到这些问题,但它与我的......没有关系? map.getBounds(); - >返回当前视口的西南经纬度和东北纬度/经度:这非常好,但我不需要这个。我需要一种方法来计算从给定的点和半径Lang和Long的4个值放在我的where子句中,这样我就可以只选择范围内的那些... – mravkata

回答

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是搜索区域的半径。

相关问题