在mysql中保存和查询区域

时间:2012-01-10 12:09:08

标签: php mysql google-maps geocoding

我有一系列保存在MySQL数据库中的区域(城市,地区等)。目前,这些只包含一个人类可读的名称。

如何选择包含特定纬度/经度的所有记录?如何保存区域信息?是否可以与Google Maps API搭配使用?

(是的,不幸的是,我与使用MySQL有关。)

2 个答案:

答案 0 :(得分:0)

最好的做法就是使用Google API收集特定邮政编码的lat和long(假设你有邮政编码)并构建所有lat / longs / postcodes的对象然后编写PHP脚本/函数只需循环遍历数组,用新的lat和longs

通过邮政编码更新你的数据库记录

例如:

$data = array ( array ( 'e11', '0.01111', '5.313133' ), array ( 'e11', '0.01111', '5.313133' ) );

foreach ( $data as $p )
{
   query ( 'UPDATE table SET lat = "' . $p['lat'] . '", lng = "' . $p['long'] . '" WHERE postcode = "' . $p['postcode'] . '" );
}

它只是漫长的啰嗦,然后收集所有长片,并采用一种格式实际循环。

答案 1 :(得分:0)

这在vanilla MySQL中并不容易。大多数时候,人们通过使用数据库引擎的GIS扩展来解决这个问题,以便存储您正在寻找的“区域”信息类型。 MySQL有Spatial Extensions可以做到这一点,你可能正在寻找的确切函数,如ST_Contains列出here

注意:您需要使用MySQL> = 5.6.1来获取contains函数的预期行为,否则它们只是基于哑的矩形操作。