2012-01-10 81 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函數獲得預期的行爲,否則它們只是基於啞矩形的操作。