我有同构应用程序,它也可以在服务器和客户端上加载。我关心的是在服务器上加载应用程序的结果,我需要调用google maps api服务以获取前“ www.mysite.com/search/NewYork--NY--United States”的经度和纬度然后我需要在php中使用以下代码从Google Maps api查找其经度和纬度(我的api在php中)

 $address= $this->input->get('address');
 $geo = file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?address='.urlencode($address).'&sensor=false');
            $geo = json_decode($geo, true);
            if ($geo['status'] = 'OK') {
              $lat = $geo['results'][0]['geometry']['location']['lat'];
              $lng = $geo['results'][0]['geometry']['location']['lng'];
            }


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

$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)));


使用上面的代码,我可以计算最大和最小纬度和经度,然后通过应用以下条件查找结果。

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


如何在不调用Google Maps API的情况下获取经度和纬度,以及如何对其进行优化以更快地获得结果。请提供有关此问题的建议。

最佳答案

如果您不打算确定街道地址,而只对离散的地名感兴趣,例如城市,地标等(在您的示例中为美国纽约),则可以考虑使用各种GeoNames exportables。您可以将它们加载到本地数据存储中,并按名称执行查找。

关于php - 如何获取服务器上同构应用程序中某个位置的纬度和经度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42235025/

10-15 01:48