0

我已经搜索了许多支持论坛,但仍然找不到我正在寻找的答案。本质上,我的网站上有一个用户注册表单。当用户单击“提交”时,它会将他们的数据保存在 mySQL 数据库中并将它们重定向到另一个页面。很简单。

但我想要另一个页面,其中有一个地图,每个注册用户的大致位置(城市、州、国家)都有一个标记。

如果要求用户输入自己的纬度和经度,这并不难做到。但是谁有这些信息随时可用???

当用户单击“提交”时,三个输入字段合并为一个变量($address)。如何对该变量($address)进行地理编码,并将其输出到其他两个变量($lat 和 $lng)???希望在 mysql_connect 之前执行此操作,这样我就可以将所有内容都准备好插入到 mySQL 数据库表中。


$first_name=$_POST['first_name'];
$last_name=$_POST['last_name'];
$status=$_POST['status'];
$service=$_POST['service'];
$rank=$_POST['rank'];
$specialty=$_POST['specialty'];
$address=$_POST['city'] . ',' . $_POST['state'] . ',' . $_POST['country'];
$city=$_POST['city'];
$state=$_POST['state'];
$country=$_POST['country'];
$email=$_POST['email'];

mysql_connect($host,$username,$password) or die("Unable to connect to database"); @mysql_select_db($database) or die("Unable to select database");

$query = "INSERT INTO $table VALUES ('','$first_name','$last_name','$status','$service','$rank','$speciality','$address','$city','$state','$country','','','$email')"; mysql_query($query);

任何帮助将非常感激!!!使用 PHP 和 mySQL 运行。

4

2 回答 2

7

您可以使用Google 的地理编码 API。这在 PHP 中相当简单。使用您需要的参数在 API URL 上执行file_get_contents()( doc ),然后在结果数据上执行json_decode()( doc )。

请注意,他们的 TOS 规定这些数据最终必须显示在 Google 地图上。否则,您将需要使用另一个地理编码服务。

最后,不要忘记错误捕获、处理超时和其他好东西。您不想无限期地等待 Google 用数据回复您。虽然他们的服务非常快,但确实会出现连接问题和其他问题。

编辑:显然除了我上面的解释之外还需要更多帮助,所以这里有一些快速代码可以帮助你。

<?php
$address="1600 Amphitheatre Pkwy, Mountain View, CA";
$result=file_get_contents("http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=" . urlencode($address) );
$geocodedinfo=json_decode($result);

print_r($geocodedinfo);
?>

同样,这只是为了让您入门。在输出中,您将看到已解码的所有内容。您正在寻找的应该是这些:

$geocodedinfo['results'][0]['geometry']['location']['lat']
$geocodedinfo['results'][0]['geometry']['location']['lng']
于 2010-11-15T16:38:58.643 回答
2

使用雅虎!Placefinder或其他地理编码 API 之一。

于 2010-11-15T16:38:32.160 回答