答案 0 :(得分:2)
以下是我采取的步骤:
假设您允许用户搜索8英里范围内的城市,请匹配表A中的记录,这些记录还包含地址或城市字段。
步骤1:当您向表A添加新记录(稍后将用于搜索)时,您可以通过Google Map API保存该地址或城市的纬度/经度。那张桌子。
第2步:当用户输入city关键字时,再次使用Google Map API获取搜索关键字城市的纬度经度。
步骤3:使用关键字lat / long与表记录lat / long匹配,使用带有“having”语句的Harvensine公式查询来获取必要的记录。
关于如何执行此操作的公式和mysql查询,is described well here
要使用的Google地图API为in this google documentation
有一点需要注意的是,假设你输入一个城市名称,比如“洛杉矶”。假设洛杉矶在地图上是一个“点”是不正确的......它是一个有形状的城市。所以假设你说洛杉矶5英里范围内的所有结果......这个问题很模糊,因为人们可能会问 - 洛杉矶的哪一端?出于这个原因,谷歌api将返回针对同一城市的多组坐标,以定义该位置的边界多边形线。如果你真的希望你的结果准确,不要只考虑距离中心5英里,考虑其他坐标,并使用结果的联合。
答案 1 :(得分:1)
如果您要在某个位置的X英里内的Google地图上查找位置类型,则可以执行此操作https://developers.google.com/places/documentation/?hl=fr&csw=1#PlaceSearches。
如果您要在某个位置的X英里内的特定位置(例如数据库中的位置)中查找位置,则您必须自己完成一些操作。使用Google地图获取每个位置的经度和高度,然后使用类似http://www.movable-type.co.uk/scripts/latlong.html之类的公式计算距离,然后仅显示您想要的距离内的结果。