搜索特定州边界内的地点

时间:2017-10-18 18:47:19

标签: php google-maps math mapbox

我正在使用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(距离中心)的圆形形状进行。

enter image description here

如果他们在圈子区域,我将带来所有的地方,问题是,它从格雷罗州的分界处传递,因此不再适用于我的应用程序。

我需要这样的东西。 enter image description here

我说,我在国家的限制范围内进行了搜索,没有通过另一个州而是尊重搜索的距离,在这个例子中50KM,它将继续搜索西部和西南部但​​不再超越东北部和东北。

是否存在任何为我带来这些界限的Google或Mapbox API,或者我如何计算它们?

0 个答案:

没有答案