Php 如何在服务器上的同构应用程序中获取位置的纬度和经度

Php 如何在服务器上的同构应用程序中获取位置的纬度和经度,php,mysql,google-maps,isomorphic-javascript,Php,Mysql,Google Maps,Isomorphic Javascript,我有一个同构的应用程序,它可以加载到服务器和客户端。我关心的是在服务器上加载应用程序的结果,我需要调用google maps api服务来获取该位置的纬度和经度,例如“www.mysite.com/search/New York--NY--United”,然后我需要从google maps api中查找其纬度和经度,并使用以下php代码(我的api是php) 然后根据这个纬度和经度,我搜索我的结果如下 $radius = 6371; $distance = 250; // latitude bo

我有一个同构的应用程序,它可以加载到服务器和客户端。我关心的是在服务器上加载应用程序的结果,我需要调用google maps api服务来获取该位置的纬度和经度,例如“www.mysite.com/search/New York--NY--United”,然后我需要从google maps api中查找其纬度和经度,并使用以下php代码(我的api是php)

然后根据这个纬度和经度,我搜索我的结果如下

$radius = 6371;
$distance = 250;
// latitude boundaries
$maxlat = $lat + rad2deg($distance / $radius);
$minlat = $lat - rad2deg($distance / $radius);
// longitude boundaries (longitude gets smaller when latitude increases)
$maxlng = $lng + rad2deg($distance / $radius / cos(deg2rad($lat)));
$minlng = $lng - rad2deg($distance / $radius / cos(deg2rad($lat)));
使用上面的代码,我计算最大和最小晶格度和经度,然后应用where条件查找结果,如下所示

$this->db->where('rv.LATITUDE >=', $minlat);
$this->db->where('rv.LATITUDE <=', $maxlat);
$this->db->where('rv.LONGTITUDE >=', $minlng);
$this->db->where('rv.LONGTITUDE <=', $maxlng);
$this->db->where('rv.LATITUDE>=',$minlat);
$this->db->where('rv.LATITUDE=',$minlng);

$this->db->where('rv.longtudent如果您不想确定街道地址,只对城市、地标等离散的地名感兴趣(在您的示例中,美国纽约)您可以查看各种名称。您可以将它们加载到本地数据存储中,并按名称进行查找。

如果您不想确定街道地址,只对城市、地标等离散的地名感兴趣(在您的示例中,美国纽约)您可以查看各种城市。您可以将它们加载到本地数据存储中并按名称进行查找。

但这会比谷歌地图快吗?它是否包括所有更新的城市?@AakashJohn不确定“所有更新的城市”是什么意思但这是一个非常完整的全球位置列表。我能说的就是查看一些边缘情况,如果你认为它可能没有位置,看看它是否有条目。至于速度,如果你查询的是本地数据存储,你就不会有潜在的网络延迟,这取决于你访问的是哪种数据存储此外,您还可以针对非常快速的查询(使用索引、分片等,具体取决于您的解决方案)对其进行调整。您甚至可以在内存缓存中创建最流行位置的快速返回,因为地标通常不会因其性质而移动太多。:)但这会比谷歌地图更快吗?它包括所有更新的城市吗?@AakashJohn不确定你所说的“所有更新的城市”是什么意思,但这是一个非常完整的全球位置列表。我所能说的就是检查一些边缘情况,你认为它可能没有位置,看看它是否有一个入口。至于速度——如果你查询的是本地数据存储,你就不会有潜在的网络延迟,这取决于你使用的数据存储的类型,你可能能够调整它以实现非常快速的查询(使用索引、切分等,具体取决于你的解决方案)。您甚至可以创建最受欢迎位置的快速内存缓存,因为地标通常不会因其本身的性质而四处移动。:)
$this->db->where('rv.LATITUDE >=', $minlat);
$this->db->where('rv.LATITUDE <=', $maxlat);
$this->db->where('rv.LONGTITUDE >=', $minlng);
$this->db->where('rv.LONGTITUDE <=', $maxlng);