如何从城市名称中找到位置坐标,然后将这些坐标分配给变量?

时间:2013-07-29 20:40:58

标签: php html search mysqli geolocation

我正在试图找出如何从用户输入的城市名称中找到位置坐标。我知道Google使用他们的API可以实现这一点,但是我无法弄清楚如何实际获取这些结果并将它们分配给php变量,以便存储在数据库中,或者用于搜索功能。 / p>

基本上,我要做的是在我的网站上实施一个搜索系统,允许用户搜索城市某个距离内的其他用户。

如果有人能帮助一个非常棒的noob程序员:)

谢谢!

1 个答案:

答案 0 :(得分:1)

以下是一些可以帮助您入门的代码

PHP找到lat / lng

    function buildGeocode($address_1, $address_2, $city, $state, $zip_code, $country){

        $base_url = "http://maps.googleapis.com/maps/api/geocode/json";

        $address = $address_1 . ' ' . $address_2 . ', ' . $city . ' ' . $state . ' ' . $zip_code . ' ' . $country;

        $request_url = $base_url . "?address=" . urlencode($address) . "&sensor=false";

        $data = json_decode(file_get_contents($request_url), true);

        return array('lat' => $data['results'][0]['geometry']['location']['lat'], 'lng' => $data['results'][0]['geometry']['location']['lng']);

    }

这是一些MYSQL,当鸟以英里为单位飞行时,在给定距离内找到物品,这应该转换为PDO或正确逃脱

SELECT SQL_CALC_FOUND_ROWS
            *
            FROM (SELECT location_tbl.*, ( 3959*(2*ASIN(SQRT(POW(SIN(((location_tbl.lat-" . $lat . ")*(PI()/180))/2),2)+COS(location_tbl.lat*0.017453293)*COS(" . $lat . "*0.017453293)*POW(SIN(((location_tbl.lng-" . $lng . ")*(PI()/180))/2),2)))) ) AS distance
                FROM location_tbl
            WHERE location_tbl.active = 1 AND location_tbl.deleted = 0) AS tmp_tbl
        WHERE distance <= '" . $dis . "'
        ORDER BY distance ASC