我正在使用Mapbox和Google Maps API开发搜索最喜欢的地方。
目前我使用半正式公式从一个点开始实现循环搜索。例如,当我点击地图上的状态时,这将返回状态的纬度和经度(国家的中心或国家),并返回每个基点的经度和纬度(南北)东西方通过哈斯金公式我计算了中心与每个点之间的距离,并且我得到了与PHP的平均距离。
math class
{
const radius = 6371;
public function __construct ()
{
}
public function harversine ($ lat, $ lng, $ lat2, $ lng2)
{
$ d = 0;
$ t1 = deg2rad ($ lat);
$ t2 = deg2rad ($ lat2);
$ dt = deg2rad (($ lat2 - $ lat));
$ dl = deg2rad (($ lng2 - $ lng));
$ a = (sin ($ dt / 2) * sin ($ dt / 2)) +
(cos ($ t1) * cos ($ t2)) *
(sin ($ dl / 2)) sin ($ dl / 2));
$ c = 2 * atan2 (sqrt ($ a), sqrt ((1 - $ a)));
$ d = self :: radius * $ c;
return floor ($ d);
}
}
现在,通过这个平均距离,我在数据库中根据该距离进行搜索,找到我用各自坐标存储的地方,这些地方是我的最爱,在基地内我再次计算公式。
一切都很完美,问题是循环搜索,如果距离确定那样,并不仅限于传递另一个状态,我会用一个例子来解释一下。
如果我寻找Tlapa,格雷罗州,墨西哥并进行搜索,此搜索将以距离X(距离中心)的圆形形状进行。
如果他们在圈子区域,我将带来所有的地方,问题是,它从格雷罗州的分界处传递,因此不再适用于我的应用程序。
我说,我在国家的限制范围内进行了搜索,没有通过另一个州而是尊重搜索的距离,在这个例子中50KM,它将继续搜索西部和西南部但不再超越东北部和东北。
是否存在任何为我带来这些界限的Google或Mapbox API,或者我如何计算它们?