我试图弄清楚如何从用户输入的城市名称中找到位置坐标。我知道 Google 使用他们的 API 使这成为可能,但我无法弄清楚如何实际获取这些结果并将它们分配给 php 变量以存储在数据库中或用于搜索功能。
本质上,我想做的是在我的网站上实现一个搜索系统,允许用户搜索城市一定距离内的其他用户。
如果有人可以帮助一个很棒的菜鸟程序员:)
谢谢!
我试图弄清楚如何从用户输入的城市名称中找到位置坐标。我知道 Google 使用他们的 API 使这成为可能,但我无法弄清楚如何实际获取这些结果并将它们分配给 php 变量以存储在数据库中或用于搜索功能。
本质上,我想做的是在我的网站上实现一个搜索系统,允许用户搜索城市一定距离内的其他用户。
如果有人可以帮助一个很棒的菜鸟程序员:)
谢谢!
这是一些帮助您入门的代码
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