Google maps 如何使用谷歌地图API搜索附近的地方,给定一对纬度、经度

Google maps 如何使用谷歌地图API搜索附近的地方,给定一对纬度、经度,google-maps,geolocation,Google Maps,Geolocation,我有一个简单的要求:显示附近的位置,按与当前用户的距离升序排序。 places表为: CREATE TABLE places ( id int(11) NOT NULL , category varchar(200) , name varchar(200) , address varchar(2000) , city varchar(100) , state varchar(100) , zipcode varchar(20) , country varchar(100) ,

我有一个简单的要求:显示附近的位置,按与当前用户的距离升序排序。

places
表为:

CREATE TABLE places (
 id int(11) NOT NULL ,
 category varchar(200) ,
 name varchar(200) ,
 address varchar(2000) ,
 city varchar(100) ,
 state varchar(100) ,
 zipcode varchar(20) ,
 country varchar(100) ,
 latitude decimal(12,9) ,
 longitude decimal(12,9) ,
 phone varchar(200) ,
 PRIMARY KEY (id)
)
我请求用户允许浏览器访问他的位置(或使用ip查找appox.location)。有了他的纬度、经度、地址、城市和国家,我有两种选择来寻找附近的地方:

1) 从用户坐标计算lat、lng的最小、最大范围,例如半径为5-10英里。然后执行以下操作:

SELECT * FROM places  
    WHERE (latitude  between MINLAT  and MAXLAT )  
    and   (longitude between MINLNG and MAXLNG) 
    and category = CATEGORY
这可能意味着我的服务器将注定与所有的计算。另一个问题是,我无法根据与用户的实际距离对结果进行排序

2) 另一个选项是选择用户所在城市的所有地方。然后,在客户端,使用GeoAPI的javascript函数计算用户和每个地方之间的距离,并按升序显示。缺点是服务器需要将城市中的所有
位置
发送给客户端(可能是0.1k-10k之间的任何位置)

考虑到所有的权衡,哪一个是最好的选择?还有其他选择吗


计划使用LAMP,但如果其他组合更快,我可以更改技术堆栈。(也建议这样做)

我想说的是,在服务器端尽可能多地做。我不知道你为什么认为这个查询“意味着我的服务器将被所有的计算所毁灭”。我想你也可以做分类;您只需要根据与用户的实际距离向查询中添加一个临时列。我不知道这个公式,但我假设它在SQL中是可以做到的。

我想说,在服务器端尽可能多地做。我不知道你为什么认为这个查询“意味着我的服务器将被所有的计算所毁灭”。我想你也可以做分类;您只需要根据与用户的实际距离向查询中添加一个临时列。我不知道这个公式,但我假设它可以在SQL中实现。

使用下面的API,它将为您提供JSON,您可以轻松提取所需的详细信息


使用以下API,它将为您提供JSON,您可以轻松提取所需的详细信息


如果在服务器端对每个用户请求进行所有计算,则服务器负载将呈指数增长。我想将距离计算和排序部分委托给客户端,以节省服务器资源如果每个用户请求的所有计算都在服务器端完成,服务器负载将成倍增加。我想将距离计算和排序部分委托给客户端,以节省服务器资源亲爱的Jerrymouse-非常感谢使用这种方法的这个有趣的线程。这看起来很令人印象深刻。你提出这个解决方案了吗?期待收到您的来信-问候亲爱的Jerrymouse-非常感谢您用这种方法提供了这条有趣的线索。这看起来很令人印象深刻。你提出这个解决方案了吗?期待您的来信-问候