【问题标题】:Geocode on form submit表单提交的地理编码
【发布时间】:2010-11-15 16:35:48
【问题描述】:

我搜索了许多支持论坛,但仍然找不到我正在寻找的答案。本质上,我的网站上有一个用户注册表单。当用户单击“提交”时,它会将他们的数据保存在 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 运行。

【问题讨论】:

  • 嘿,别忘了用 mysql_real_escape_string() 转义你的数据!!!

标签: php sql forms submit geocode


【解决方案1】:

您可以使用Google's Geocoding 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']

【讨论】:

  • 你知道我可以用来引导我完成整个过程的任何例子吗?我已经浏览了他们的网站大约 100 次,但找不到任何可以帮助我完成这项工作的内容。
  • 感谢您的提示!如果我有更多问题,我会做一些工作并大声喊叫。再次感谢!
  • 这很有帮助!我有同样的问题。谢谢!
【解决方案2】:

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

【讨论】:

  • 我知道我需要使用其中一种地理编码 API,只是不知道如何将其全部合并。
  • @Jeremy 如果您转到我发布的链接,请单击文档链接(“入门”的第 3 步),然后单击示例部分。或者您实际上是在寻求使用 PHP 发出 HTTP 请求和解析 XML 的帮助?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
  • 2013-03-19
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多