2012-01-10 76 views
1

我有一系列保存在MySQL DB中的区域(城市,地区等)。目前这些只包含一个人类可读的名字。在mysql中保存和查询区域

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

(是的,不幸的是,我绑在使用MySQL。)

+0

您可以从http://www.maxmind.com/app/geoip_country下载地理位置数据库, http://geolite.maxmind.com/download/geoip/database/并利用它 – 2012-01-10 12:33:01

回答

0

你最好关闭做一些像使用谷歌API来收集lat和长定邮政编码的(假设你有邮政编码)和建筑起来,所有的纬度/多头/邮政编码的对象,然后通过阵列编写PHP脚本/功能,然后就循环,用新纬度邮编更新数据库中的记录,并渴望

例如:

$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'] . '"); 
} 

这只是很长的时间然后收集他们所有的长期贷款,并采用实际循环的格式。

+0

它不是寻找一个纬度/长度的问题,但节省一个区域。邮编的同样问题:它们由多边形而不是点表示。 – sqwk 2012-01-10 12:53:16

+0

我真的不确定你的意思 – 2012-01-10 15:22:21

0

在香草MySQL中这并不容易。大多数情况下,人们通过在其数据库引擎中使用GIS扩展来解决此问题,以便存储所需的“区域”信息类型。 MySQL有Spatial Extensions这应该做的伎俩,你可能正在寻找的确切功能,如ST_Contains列出here

注意:您需要有MySQL> = 5.6.1才能从contains函数获得预期的行为,否则它们只是基于哑矩形的操作。